Sed - 在字符串前删除x个字符

时间:2013-12-30 09:28:12

标签: regex linux bash command-line sed

我有一个txt文件,我想删除特定字符串之前的x个字符

示例:

52.451878252 foo 845.851878212 foo
98.444854655 foo 458.344854656 foo

我想在字符串'foo'之前删除8个字符才能得到这个:

52.45 foo 845.66 foo
98.44 foo 458.66 foo

我应该如何处理sed命令(或其他内容)?

谢谢:)

2 个答案:

答案 0 :(得分:7)

你走了:

sed -e 's/........foo/ foo/g' file.txt

或等效地:

sed -e 's/.\{8\}foo/ foo/g' file.txt

甚至:

sed -e 's/.\{8\}\(foo\)/ \1/g' file.txt

或者采用不同的方法,样本的输出相同:

sed -e 's/[0-9]\{7\} / /g' file.txt

答案 1 :(得分:2)

如果您的目标是将每个浮点数向下舍入到第二个小数点,则可以使用printf

while read line; do
    printf "%0.2f %s %0.2f %s\n" $line
done < file.txt