我正在尝试删除文件中每一行的中间部分。所有的行都是这样的:
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/