我有一个以下形式的文件(sample1.txt):
1 a
2 b
3 d
4 e
5 k
6 hellohi
7 stackoverflowsite
现在,如果一行的最后一个字符是"\",那么我想将其替换为",以便将sample1.txt转换为以下文件:
1 a
2 b
3 d
4 e
5 k
6 hellohi
7 stackoverflowsite
我知道可以使用编程语言做同样的事情,但是是否可以使用 linux 命令(如 grep、sed 等)做同样的事情
尝试:
cat sample1.txt | sed 's/\$//'
使用 Sed,您可以执行以下操作:
sed -i 's/\$//' samples.txt
s 将开始替换。//是匹配的。在这种情况下,第一个 \ 是这样第二个 \ 是你想要替换的,从字面上使用,而不是作为 sed 命令的一部分 \ = 匹配 a \,而 \ 单独意味着完全不同的东西。$ 表示从行尾查找第一个实例,因此您不会匹配行内的任何其他"\"。
//是第一个模式匹配的结束和替换文本的开始,所以如果你在哪里做/test/文件末尾的/将被替换为测试,输出将看起来像
sed -e 's/\$/test/' sample.txt
1 a
2 btest
3 d
4 etest
5 k
6 hellohi
7 stackoverflowsitetest
sed 命令中的 -i 将执行内联替换,以便修改文件并且不会打印到 STDOUT
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if extension supplied)
关于sed的附加阅读。 希望这有帮助。
请检查,
# 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/
谢谢。