sedを使用して行の一部を削除しますか?

sedを使用して行の一部を削除しますか?

次の出力があります。

Date Time: June 22 12:40:00

Product User Host IP

Software User User *.***.***.***
Software1 User User *.***.***.***

sedandのいくつかの機能を試しましたが、うまく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

sed5行目以降の最後の単語と前のスペースまたはタブを削除するために使用されます。

$ 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,$と、この行を置き換えると、行の末尾からスペースまたはタブ以外の文字が続くスペースまたはタブが削除されます。

関連情報