我有一个具有这种格式的文件:
21:26:54.21 PT disconnected
21:26:56.18 CC1 received TCMTM
21:26:56.18 CC2 received TCMTM
21:26:56.18 TFT received TCMTM
21:26:56.18 FEC received TCMTM
我想删除每行的第一部分 (21:26:54.21),我试过这个:
sed "s/^[:digit:]*[:space:]//" file.log
但它不起作用,我得到与条目相同的输出。
最佳答案
使用cut
:
$ cut -d' ' -f2- file
PT disconnected
CC1 received TCMTM
CC2 received TCMTM
TFT received TCMTM
FEC received TCMTM
将空格设置为分隔符并从字段 2 打印到最后一个 (f2-
)。
使用awk
:
$ awk '{$1=""}1' file ## leading space :(
PT disconnected
CC1 received TCMTM
CC2 received TCMTM
TFT received TCMTM
FEC received TCMTM
将第一个字段设置为空。
$ awk '{for (i=1;i<=NF; i++) $i=$(i+1); NF=NF-1}1' file
PT disconnected
CC1 received TCMTM
CC2 received TCMTM
TFT received TCMTM
FEC received TCMTM
它将字段编号减一,将每个字段移到前一个(因此,第一个被删除)。
使用sed
:
$ sed 's/^[^ ]* //g' file
PT disconnected
CC1 received TCMTM
CC2 received TCMTM
TFT received TCMTM
FEC received TCMTM
删除从行首到第一个空格的所有内容。
或基于您的sed
:
$ sed "s/^[0-9:.]* //g" file
PT disconnected
CC1 received TCMTM
CC2 received TCMTM
TFT received TCMTM
FEC received TCMTM
删除所有字符 0-9
或 :
或 .
从行首到第一个空格。
关于linux - 删除文件中一行的开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19787245/