我有這一行:
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 oneliner,但 sed 可能是更好的解決方案。對於以這種方式進行剪輯,我對其中任何一個都不太了解。
注意:這是一個範例,我需要刪除的時間戳部分不會相同,因為我需要對具有不同時間戳記的多行執行此操作。
答案1
最簡單的方法awk
可能是對第一個空格分隔的欄位進行正規表示式替換,替換從句點到欄位末端的所有內容:
awk '{sub(/\..*/,"",$1)}1' somefile
答案2
我會使用 awk
awk --posix '{ gsub(/\.[[:digit:]]{6}/, "", $1); print }' filename
將定位第一個欄位(以空格分隔)並蒐索 .接下來是6個數字並將其清空。
答案3
與 GNUsed
sed -r 's/^([^.]+)\.[0-9]+ /\1 /' filename
^([^.]+)
捕獲起始字串直到第一個點字符\.[0-9]+
匹配點字符後面跟超過 1 位數字字符
如果字元數與範例中給出的一致,
sed -r 's/^(.{8}).{7} /\1 /' filename