私はこの行を持っています:
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とcutステートメントをいじくり回しましたが、役に立ちませんでした。私はawkワンライナーを見つけたいのですが、sedがこれに対するより良い解決策かもしれません。この方法でカットすることになると、私はどちらかについて十分に知りません。
注:これは例であり、すべて異なるタイムスタンプを持つ複数の行でこのアクションを実行する必要があるため、切り取る必要のあるタイムスタンプの部分は同じではありません。
awk
を使用する場合、おそらく最も簡単な方法は、最初の空白で区切られたフィールドで正規表現の置換を行い、ピリオドからフィールドの終わりまですべてを置き換えることです。
awk '{sub(/\..*/,"",$1)}1' somefile
私はawkを使用します
awk --posix '{ gsub(/\.[[:digit:]]{6}/, "", $1); print }' filename
最初のフィールド(スペース区切り)をターゲットにして、を検索します。続いて6つの数字を入力し、空にします。
with GNU sed
_sed -r 's/^([^.]+)\.[0-9]+ /\1 /' filename
_
^([^.]+)
最初のドット文字までの開始文字列をキャプチャします\.[0-9]+
_一致ドット文字の後に1桁以上の文字が続く例に示されているように文字数が一貫している場合、
_sed -r 's/^(.{8}).{7} /\1 /' filename
_