一、grep
grep是一种文本搜索工具,用于在文件或标准输入中查找匹配的字符串。它的基本语法如下:
grep [options] pattern [file ...]
其中,pattern是要查找的字符串,file是要搜索的文件名。如果没有指定文件名,则默认从标准输入中读取数据。常用的选项包括:
-
-i
:忽略大小写 -
-v
:反向查找,输出不匹配的行 -
-n
:输出匹配行的行号 -
-r
:递归查找子目录中的文件 -
-w
:匹配整个单词,而不是部分匹配
示例:
- 在文件中查找包含关键字"hello"的行:
grep "hello" file.txt
- 在多个文件中查找包含关键字"world"的行:
grep "world" file1.txt file2.txt file3.txt
- 在文件中查找包含关键字"hello"的行,并输出行号:
grep -n "hello" file.txt
- 在文件中查找不包含关键字"hello"的行:
grep -v "hello" file.txt
- 在目录及其子目录中查找包含关键字"hello"的文件:
grep -r "hello" /path/to/directory
二、awk
awk命令是一种文本处理工具,用于对文本文件进行处理和分析。它可以根据指定的规则对文本进行分割、过滤、格式化等操作。它的基本语法如下:
awk 'pattern {action}' file
其中,pattern是要匹配的模式,action是要执行的操作。如果没有指定文件名,则默认从标准输入中读取数据。常用的操作包括:
- print:打印指定的字段或整行数据
- if/else:根据条件执行不同的操作
- for/while:循环执行操作
- getline:读取下一行数据
例子:
- 打印整个文件
awk '{print}' filename
- 按列打印文件
awk '{print $1,$2}' filename
- 按条件过滤文件
awk '{if($1=="hello") print}' filename
- 使用内置函数
awk '{print length($0)}' filename
- 使用正则表达式
awk '/pattern/ {print}' filename
- 使用变量
awk -v var=value '{print var}' filename
- 处理多个文件
awk '{print FILENAME,$0}' file1 file2
- 使用BEGIN和END块
awk 'BEGIN{print "start"} {print} END{print "end"}' filename
三、sed
sed是一种流编辑器,用于对文本进行替换、删除、插入等操作。它的基本语法如下:
sed [options] 'command' file
其中,command是要执行的命令,file是要处理的文件名。常用的命令包括:
- s:替换指定的字符串
- d:删除指定的行
- a/i:在指定的行后/前插入新的文本
- p:打印指定的行或整个文件
例子:
- 替换文件中的字符串
sed 's/old/new/g' file.txt
这个命令将文件file.txt中所有的"old"字符串替换为"new"字符串。
- 删除文件中的某一行
sed '3d' file.txt
这个命令将文件file.txt中的第3行删除。
- 打印文件中的某一行
sed -n '3p' file.txt
这个命令将文件file.txt中的第3行打印出来。
- 在文件中插入一行
sed '2i new line' file.txt
这个命令将"new line"字符串插入到文件file.txt的第2行之前。
- 在文件中追加一行
sed '$a new line' file.txt
这个命令将"new line"字符串追加到文件file.txt的最后一行。
- 直接修改文件内容
sed -i 's/old/new/g' file.txt
这个命令将文件file.txt中所有的"old"字符串替换为"new"字符串,并直接修改文件内容。
网友评论