sedを使用して信号名を抽出する方法

sedを使用して信号名を抽出する方法

/usr/bin/kill -L印刷:

 1 HUP      2 INT      3 QUIT     4 ILL      5 TRAP     6 ABRT     6 IOT      7 BUS      8 FPE      9 KILL    10 USR1
11 SEGV    12 USR2    13 PIPE    14 ALRM    15 TERM    16 STKFLT  17 CHLD    17 CLD     18 CONT    19 STOP    20 TSTP
21 TTIN    22 TTOU    23 URG     24 XCPU    25 XFSZ    26 VTALRM  27 PROF    28 WINCH   29 IO      29 POLL    30 PWR
31 SYS     34 RTMIN   64 RTMAX

ここで、sedを使用して、信号の数に応じて、「11 SEGV」、「12 USR2」、または「SEGV」、「USR2」を印刷できるようにしたい(両方のソリューションが機能します)。

私はそうしました/usr/bin/kill -L|sed -n "s/\(^\| \)11 \([^ ]\+\)\+/<<\2>>/;s/.*<<\([^>]\+\)>>.*/\1/p"。 「SEGV」が11に出力されます。

しかし、問題は、2番目の交換なしでより簡単に実行できるかどうかです。

ベストアンサー1

あなたできる走る

/usr/bin/kill -L | grep -o '[0-9]\+ [A-Z0-9]\+'

改行文字で信号を分離して簡単にgrep使用してくださいgrep -w "^$NUM"

または使いやすいですkill -l "$NUM";-)

$ kill -l 11
SEGV

おすすめ記事