cwd*_*cwd 33 linux command-line grep replace 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
Run Code Online (Sandbox Code Playgroud)
我运行了正确的命令cat | {remove comments command},然后我会得到:
error_reporting = E_ALL & ~E_NOTICE
Run Code Online (Sandbox Code Playgroud)
注-我认为cat会做到这一点的最好办法,但实际上,我细使用其他实用程序一样的答案awk,sed,egrep,等。
bsd*_*bsd 32
您不需要通过 grep 管道文件,grep 将文件名作为命令行参数。
grep -v '^#' file1 file2 file3
Run Code Online (Sandbox Code Playgroud)
将打印除以 # 字符开头的行之外的所有行。您可以将评论字符更改为您想要的任何内容。
如果您有多个评论字符(假设它在一行的开头)
egrep -v '^(;|#|//)' filelist
Run Code Online (Sandbox Code Playgroud)
nro*_*ans 10
egrep可以节省您的使用cat。换句话说,创建更少的进程(egrepvs cat+ egrep)并使用更少的缓冲区(从管道cat到egrep与没有管道)。
cat如果您只是想将文件传递给可以自行读取的命令,则限制使用通常是一个好主意。
话虽如此,以下命令将删除注释,即使它们用空格或制表符缩进:
egrep -v '^[[:blank:]]*;' 文件.ini
egrep -v '^;|^$' $file
Run Code Online (Sandbox Code Playgroud)
这将排除以“;”开头的行和空行。
在正则表达式中,^表示行首和$行尾,因此^$指定行首字符和行尾字符紧挨着的行。
| 归档时间: |
|
| 查看次数: |
59733 次 |
| 最近记录: |