次の出力があります。
Date Time: June 22 12:40:00
Product User Host IP
Software User User *.***.***.***
Software1 User User *.***.***.***
sed
andのいくつかの機能を試しましたが、うまくawk
いきません。テキストを次の方向に保持したい。
Date Time: June 22 12:40:00
Product User Host
Software User User
Software1 User User
次のコマンドがあります。
$ cat Mathematica_06-* | \
grep -w -A 4 -B 5 "AER8\|User\|User1\|User2\|User3\|User4\|User5\|User6\|User7\|User7\|User8\|User9\|User10\|User11\|User11\|User12\|User13\|User14\|User15\|User16\|User17\|User18\|User19" | \
awk '{print $1,$3,$4,$5,$7}' | \
egrep -v
> Output.log
最後に追加しようとしましたが、egrep -v "|IP"
そのコマンドにその行を入れると、次の出力が表示されます。
Date Time: June 22 12:40:00
Softare User User
Software User User
行の残りの部分に影響を与えずに「IP」と「*」の部分を削除する他の方法はありますか?
答え1
sedを使う
sed -i -e 's/\*.*//g' -e 's/ IP//g' -e '\$^Syntax.*$d' File*
これはまた働きます:
awk '/Date/{print $0} /^Product|^Soft/{print $1" "$2" "$3} /^$/' File*
答え2
これは1つの方法ですawk
。変数はNR
レコード番号を表し、最初の場合は印刷します。 awk
フィールドは 1 から計算されるので、これ以降は最初の 3 つだけが必要であるという意味です。
awk 'NR==1 {print;next};{print $1,$2,$3}'
答え3
sed
5行目以降の最後の単語と前のスペースまたはタブを削除するために使用されます。
$ sed -E '5,$s/[[:blank:]]*[^[:blank:]]+$//' file
Date Time: June 22 12:40:00
Product User Host IP
Software User User
Software1 User User
5行目から始まる各行のアドレスを指定する5,$
と、この行を置き換えると、行の末尾からスペースまたはタブ以外の文字が続くスペースまたはタブが削除されます。