我正在尝试从某些不以#开头的文件中提取行(注释掉)。我将如何浏览文件,忽略所有内容的#,然后将不以#开头的每一行复制到另一个文件中。
由于
答案 0 :(得分:3)
更简单:grep -v '^[[:space:]]*#' input.txt > output.txt
答案 1 :(得分:1)
这假设您正在使用Unix / Linux shell和可用的Unix命令工具包,并希望保留原始文件的副本。
cp file file.orig
mv file file.fix
sed '/^[ ]*#/d' file.fix > file
rm file.fix
或者,如果你有一个很好的闪亮的新GNU sed,所有这些都归纳为
cp file file.orig
sed -i '/^[ ]*#/d' file
在这两种情况下,sed命令中的正则表达式都是[spaceCharTabChar]
所以你说,删除任何以(可选空格或制表符)#开头的行,但打印其他所有行。
我希望这会有所帮助。
答案 2 :(得分:1)
grep -v ^\# file > newfile
grep -v ^\# file | grep -v ^$ > newfile
不是花哨的正则表达式,但我向Jr. Admins提供此方法,因为它有助于理解管道和重定向。