linux - 删除文件中一行的开头

标签 linux bash sed

我有一个具有这种格式的文件:

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/

相关文章:

php - PHP上传文件到服务器错误

bash - 如何在 bash 中使用 N! 进行排列输入?

bash - 使用 sed 转义字符串变量中的符号

performance - 在 Bash 中高效计算数十万次浮点运算

bash - 如何从变量中去除 ANSI 转义序列?

linux - 在 bash 中使用 sed 覆盖同一个文件

bash - 将字符串 append 到 shell 中的输出

c - 在 execvp 中传递 awk(printf)

linux - 如何在 raspbian 上安装最新版本的 nginx?

c++ - fatal error : opencv2/core. hpp:在 opencv4 中没有这样的文件或目录编译终止