我有一个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命令(或其他内容)?
谢谢:)
答案 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