我有一个小数据集,如下面的< filename>:
##standby!##hellow how are you1
##standby!##hellow how are you2
#how do you do
##standby!##hellow how are you4
am good jane
##standby!##hellow how are you5
现在我必须检查字符串##standby!##
是否存在并且发生在任何给定行的开头,如果存在,则将其删除。
如果字符串##standby!##
在该行的开头不可用,则跳过该行并继续该文件的其余部分。
我试过了:
sed '/^#/ d' <filename>
非常感谢任何帮助。
答案 0 :(得分:1)
您可以简单地使用:
sed -i.bak 's/^##standby!##//' file
hellow how are you1
hellow how are you2
#how do you do
hellow how are you4
am good jane
hellow how are you5
^##standby!##
将匹配启动时的模式,替换只是一个空字符串。 -i.bak
用于内联编辑。
答案 1 :(得分:1)
您可能希望使用符合POSIX的sed
参数,以便跨平台可移植地使用此命令:
sed 's/^##standby!##//g' file > newfile
POSIX sed
仅支持-efn选项。
答案 2 :(得分:0)
perl -pe 's/##standby\!##//g' filename
生成此输出:
hellow how are you1
hellow how are you2
#how do you do
hellow how are you4
am good jane
hellow how are you5
-p
遍历每一行,在处理后打印出来
-e
执行perl代码
s/foo/bar/g
代替