如果存在,则删除每行的注释

时间:2015-10-05 21:31:33

标签: shell awk sed grep

我有一个小数据集,如下面的< 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>

非常感谢任何帮助。

3 个答案:

答案 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代替