如何“cat”文件并删除注释行?

如何“cat”文件并删除注释行?

我想知道是否有一种方法可以cat归档php.ini并删除以;

例如,如果文件包含以下内容:

;   - Show all errors, except for notices
;
;error_reporting = E_ALL & ~E_NOTICE
;
;   - Show only errors
;
;error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR
;
;   - Show all errors except for notices
;
error_reporting  =  E_ALL & ~E_NOTICE

我运行了正确的命令cat | {remove comments command},然后我最终会得到:

error_reporting  =  E_ALL & ~E_NOTICE

笔记- 我认为这cat是最好的方法,但实际上我对使用另一个实用程序(如、awk、等)的答案很满意。sedegrep

答案1

您不需要通过 grep 通过管道传输文件,grep 将文件名作为命令行参数。

grep -v '^#' file1 file2 file3

将打印除以 # 字符开头的所有行。您可以将评论字符更改为您想要的任何内容。

如果您有多个注释字符(假设它位于一行的开头)

egrep -v '^(;|#|//)' filelist

答案2

您可以使用:

sed -e '/^;/d' php.ini

答案3

egrep可以节省你的使用cat。换句话说,创建更少的进程(egrepcat+ egrep)并使用更少的缓冲区(从cat到 的管道egrep与无管道)。

cat如果您只想将文件传递给可以自行读取该文件的命令,那么限制使用通常是一个好主意。

话虽如此,以下命令将删除注释,即使它们是用空格或制表符缩进的:

egrep -v '^[[:空白:]]*;'文件.ini

答案4

grep -Ev ^'(#|$)' file.txt

从 file.txt 中删除所有注释和空行

根据 Yokai 的评论更新了答案。 “直接调用egrep或fgrep已被弃用,但提供它是为了允许依赖它们的历史应用程序在不修改的情况下运行。”参考:https://www.gnu.org/software/grep/manual/grep.html

相关内容