我想知道是否有一种方法可以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
、等)的答案很满意。sed
egrep
答案1
您不需要通过 grep 通过管道传输文件,grep 将文件名作为命令行参数。
grep -v '^#' file1 file2 file3
将打印除以 # 字符开头的所有行。您可以将评论字符更改为您想要的任何内容。
如果您有多个注释字符(假设它位于一行的开头)
egrep -v '^(;|#|//)' filelist
答案2
您可以使用:
sed -e '/^;/d' php.ini
答案3
egrep
可以节省你的使用cat
。换句话说,创建更少的进程(egrep
与cat
+ 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