求问关于sed命令的问题
debian吧
全部回复
仅看楼主
level 9
AKI- 楼主
我要删除一个文本里面的每一行开头的空格、末尾的分号和多余空行,并在第一行插入“#!/bin/bash”。
删除空格、分号和空行:
sed -i 's/^ *//g;s/; *$//g;/^$/d' test
在第一行插入#!/bin/bash
sed -i '1i #!/bin/bash' test
两行都执行成功了,我想把两个命令行合成一行:
sed -i 's/^ *//g;s/; *$//g;/^$/d;1i #!/bin/bash' test
执行后发现最后添加#!/bin/bash不成功,也就是前面的都执行了,最后的添加文本没有添加成功,这是为什么?
2018年04月08日 07点04分 1
level 11
!是不是要加反义符啊,能直接匹配吗?
2018年04月08日 07点04分 2
加反斜杠吗?没用啊
2018年04月08日 13点04分
level 11
可能是引号内只能有一个操作命令吧,我把插入操作放前面开始处,后面的所有内容都插入了,替换功能没有了
替换换前面,插入功能没有了
用-e分成两个才能实现,而且插入要放在替换前面才能使插入和替换都实现,可能跟sed的设计有关
2018年04月08日 15点04分 3
试了一下,还真是,用-e就可以了,感谢
2018年04月11日 09点04分
1