私にはこの行があります:
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 の方がこの場合はより良い解決策かもしれません。この方法でカットすることに関しては、どちらも十分には知りません。
注: これは例であり、切り取る必要があるタイムスタンプの部分は同じではありません。これは、タイムスタンプが異なる複数の行に対してこのアクションを実行する必要があるためです。
答え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