我正在尝试删除文件中每一行的中间部分。所有的行都是这样的:

79.472850   97 SILENCE

我需要结束:
79.472850 SILENCE

由于每一行都有不想要的部分,从第 10 个字符开始到第 14 个字符结束,
我试图以这种方式使用sed:
sed "s/\(.\{9\}\).\{6\}//",但我最终得到的是字符14之后的所有内容。制表符空间后面的数字在每个文件中都会变化。我该怎么做才能让 sed 只剪掉标签和两位数字?

谢谢你的帮助。

最佳答案

根据您的输入和预期输出,这可以是一种方式:

$ echo "79.472850   97 SILENCE" | tr -s " " | cut -d" " -f1,3
79.472850 SILENCE
  • tr -s " " 删除重复的空格。
  • cut -d" " -f1,3 基于空格分割打印第一个和第三个字段。

  • 使用 sed :
    $ sed 's#\([^ ]*\)[ ]*\([^ ]*\)[ ]*\([^ ]*\)#\1 \3#g' <<< "79.472850   97 SILENCE"
    79.472850 SILENCE
    

    关于bash - 从 Bash 中的行中删除中间的 n 个字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18186481/

    10-10 22:33