至尊技术网 - grep https://www.zzwws.cn/tag/grep/ zh-CN Fri, 13 May 2022 10:30:00 +0800 Fri, 13 May 2022 10:30:00 +0800 Linux find|grep|sed命令基本语法 https://www.zzwws.cn/archives/6340/ https://www.zzwws.cn/archives/6340/ Fri, 13 May 2022 10:30:00 +0800 悠悠楠杉 find命令

语法:

find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression] [action]

说明:

path... 查找路径,可以指定多个,默认为当前路径
expression 查找的条件,包括根据文件名、类型、大小、修改时间等进行查找,默认查找当前路径所有文件
action: 处理动作,对符合条件的文件所做的操作,默认为显示到标准输出

查找条件:

-name 根据文件名查找, 支持glob,即包括: *,?,[],[^],来匹配文件名

例如:

find /etc/ -name passwd 精确查找
find /etc/ -name '*passwd*' 匹配查找
-iname 根据文件名查找,不区分大小写
-regex pattern 使用正则表达式来匹配文件(路径)

grep命令

1、在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行:grep test *file

2、以递归的方式查找符合条件的文件:grep -r test *

3、反向查找:grep -v test *

4、忽略大小写查找:grep -i test *

6、显示查询结果行号:grep -n test *

7、显示总共有多少行符合条件:grep -c test *

8、匹配符合条件上下文N行:grep -C N test *

9、只匹配单词:grep -w test *

10、查找并列出匹配的文件名:grep -l test *

11、查找并列出不匹配的文件名:grep -L test *

12、过滤带注释行或空行:grep -v '^#' * | grep -v '^$' *

sed命令

sed -i "s/查找字段/替换字段/g" 文件名
-i 表示inplace edit,就地修改文件
-r 表示搜索子目录
-l 表示输出匹配的文件名
s表示替换,d表示删除

示例:sed -i "s/shan/hua/g" lishan.txt

把当前目录下lishan.txt里的shan都替换为hua

替换字段包括子目录:

sed -i s/查找字段/替换字段/g `grep -rl 查找字段 *`

补充:sed命令的其他用法如下

1、删除行首空格

sed 's/^[ ]*//g' filename
sed 's/^ *//g' filename
sed 's/^[[:space:]]*//g' filename

2、行后和行前添加新行

行后:sed 's/pattern/&\n/g' filename
行前:sed 's/pattern/\n&/g' filename
//&代表pattern

3、使用变量替换(使用双引号)

sed -e "s/$var1/$var2/g" filename

4、在第一行前插入文本

sed -i '1 i\插入字符串' filename

5、在最后一行插入

sed -i '$ a\插入字符串' filename

6、在匹配行前插入

sed -i '/pattern/ i "插入字符串"' filename

7、在匹配行后插入

sed -i '/pattern/ a "插入字符串"' filename

8、删除文本中空行和空格组成的行以及#号注释的行

grep -v ^# filename | sed /^[[:space:]]*$/d | sed /^$/d
]]>
0 https://www.zzwws.cn/archives/6340/#comments https://www.zzwws.cn/feed/tag/grep/