私は次の行を持っています:
08:30:02.480507 IP 192.168.100.150.65119 > 192.168.100.151:53 59865 [1au] A? click.em.redbox.com. (48)
タイムスタンプから「.480507」を削除する必要があるため、行は次のようになります。
08:30:02 IP 192.168.100.150.65119 > 192.168.100.151.53: 59865 [1au] A? click.em.redbox.com. (48)
私は成功せずにいくつかの厄介で切り捨てられたステートメントをたどりました。 awk onelinerを探したいのですが、sedはより良い解決策かもしれません。このように編集することについてはわかりません。
注:これは例です。削除する必要があるタイムスタンプ部分は、タイムスタンプが異なる複数の行に対してこれを行う必要があるものと同じではありません。
答え1
最も簡単な方法awk
は、スペースで区切られた最初のフィールドで正規表現を置き換えることで、ピリオドからフィールドの終わりまですべてを置き換えることです。
awk '{sub(/\..*/,"",$1)}1' somefile
答え2
私はawkを使用します
awk --posix '{ gsub(/\.[[:digit:]]{6}/, "", $1); print }' filename
最初のフィールド(スペースで区切り)を見つけて検索します。以下は6つの数字です。
答え3
GNUと共にsed
sed -r 's/^([^.]+)\.[0-9]+ /\1 /' filename
^([^.]+)
開始文字列を最初のドット文字までキャプチャ\.[0-9]+
1つ以上の数字が後に続くドット文字と一致します。
例のように文字数が与えられると、
sed -r 's/^(.{8}).{7} /\1 /' filename