从未在shell脚本中注释掉的文件中提取所有行

时间:2011-08-25 17:33:45

标签: shell

我正在尝试从某些不以#开头的文件中提取行(注释掉)。我将如何浏览文件,忽略所有内容的#,然后将不以#开头的每一行复制到另一个文件中。

由于

3 个答案:

答案 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提供此方法,因为它有助于理解管道和重定向。