4

情報を抽出したいこのログがあります。sed抽出して使いたいです。

Nov 12 19:56:52 libra kernel: [ 1353.27355] WarningIN=em0 OUT=eth0 MAC=c8:1b:3c:fd:5D:e9:90:a9:8F:43:83:E3:15:0e SRC=222.171.89.16 DST=49.137.111.136 LEN=222 TOS=0x8C PREC=0xbF TTL=107 ID=31469 PROTO=ICMP TYPE=35 CODE=8 ID=24917 SEQ=166

19:56:52 12 Nov;Warning;em0;eth0;222.171.89.16;49.137.111.136;ICMP;;

の理解に問題がありsedます。誰かがここで私を修正できれば、それは素晴らしいことです. まずは日付を取得したかったので書きました

$ sed 's/\([0-9][0-9]:[0-9][0-9]:[0-9][0-9]\).*/\1/' file.log

しかし、私の出力は

Nov 12 19:56:52

なぜ取得していないのか理解できません19:56:52

4

3 に答える 3

1

次のパターンを使用します。

sed -r 's/(^.*\s)([0-9][0-9][:][0-9][0-9]:[0-9][0-9])(.*$)/\2/'

次に例を示します。

echo "Nov 12 19:56:52 libra kernel" | sed -r 's/(^.*\s)([0-9][0-9][:][0-9][0-9]:[0-9][0-9])(.*$)/\2/'

=> 19:56:52

sed を使用してすべてのファイルの内容を印刷したいだけの場合は、次を使用して実行できます。

sed r FILE

sed を次のように動作させたい場合grep:

sed -n '/regexp/p' FILE          # method 1
sed '/regexp/!d'   FILE          # method 2

または、次のように動作させたい場合grep -v

sed -n '/regexp/!p' FILE         # method 1, corresponds to above
sed '/regexp/d'     FILE         # method 2, simpler syntax

また、多数の sed ワンライナーをここで見つけることもできます(実際、上記の grep の例は、ここにリンクされている Web ページから取得したものです。ただし、FILEそれぞれに を追加しました)。

于 2013-07-30T22:16:46.293 に答える