我有一个以下格式的文件(sample1.txt):
1 a
2 b\
3 d
4 e\
5 k
6 hello\hi
7 stackoverflow\site\
现在如果一行的最后一个字符是'\',那么我想用''替换它,这样我将sample1.txt转换为以下文件:
1 a
2 b
3 d
4 e
5 k
6 hello\hi
7 stackoverflow\site
我知道使用编程语言可以做同样的事情,但是可以使用linux命令(如grep,sed等)来做同样的事情
答案 0 :(得分:3)
尝试:
cat sample1.txt | sed 's/\\$//'
答案 1 :(得分:1)
使用Sed,您可以执行以下操作:
sed -i 's/\\$//' samples.txt
将开始替换。 //是什么匹配。在这种情况下,第一个\是第二个\是你想要替换的是字面上使用而不是作为sed命令的一部分\ =匹配一个\而\单独表示完全不同的东西。 $表示从行尾查找第一个实例,因此您不匹配该行中的任何其他“\”。
//是第一个模式匹配的结束和替换文本的开始,所以如果你在哪里做/ test /文件末尾的/将被替换为测试,输出看起来像
sed -e 's/\\$/test/' sample.txt
1 a
2 btest
3 d
4 etest
5 k
6 hello\hi
7 stackoverflow\sitetest
sed命令中的-i将执行内联替换,因此它会修改文件并且不会打印到STDOUT
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if extension supplied)
关于sed的补充阅读。希望这会有所帮助。
答案 2 :(得分:0)
请检查,
# cat checkin.sh
root/
postfix/
root/
postfix/
# sed -i 's/\/$//g' checkin.sh ----> to remove last / in file.
# cat checkin.sh
root
postfix
root
postfix
# sed -i 's/$/\//g' checkin.sh -----> to add / in every line's end.
# cat checkin.sh
root/
postfix/
root/
postfix/
感谢。