我有一个文本文件text0.txt
,如
# text0.txt
# This is comment
Hello, I like banana. # more comments
bra bra bra...
问题是命令是什么
$ some_command text0.txt
输出
Hello, I like banana.
bra bra bra...
到标准输出。
我正在使用bash。 感谢。
答案 0 :(得分:2)
您想要删除以#
开头的行,并删除行上任何其他地方的#
及其后任何字符。该描述实际上定义了sed
脚本应该是什么样的:
sed -e '/^#/d' -e 's/[[:space:]]*#.*//' text0.txt
这也删除了行末#
之前的所有空格。如果你坚持的话,你可以将它组合成一个参数:
sed '/^#/d; s/[[:space:]]*#.*//' text0.txt
就我个人而言,我认为当他们分别参与单独的操作时,阅读单独的操作会更容易,但这是您可以为自己做出的选择。
请注意,无需运行两个(或更多)命令;一个就够了。
答案 1 :(得分:1)
用awk:
awk '{a=length($0);gsub("#.*","",$0); if(a==0 || length($0)>0)print $0}' filename