grep 命令,用于在文件中搜索指定的模式
常用选项:
-m
:匹配指定次数后停止。-v
:显示不被模式匹配到的行。-i
:忽略大小写。-n
:显示匹配的行号。-c
:统计匹配的行数。-o
:仅显示匹配到的字符串。-q
:静默模式,不输出任何信息。-A
:显示匹配行后的指定行数。-B
:显示匹配行前的指定行数。-C
:显示匹配行前后的指定行数。-e
:实现多个选项间的逻辑或关系。-w
:匹配整个单词。-E
:使用扩展正则表达式。-F
:不支持正则表达式。-f
:根据模式文件处理两个文件相同内容。-r
:递归目录,但不处理软链接。-R
:递归目录,且处理软链接。
-
基本用法
grep 'root' /etc/passwd
在
/etc/passwd
文件中查找包含root
的行。 -
匹配指定次数
grep -m 1 'root' /etc/passwd
在
/etc/passwd
文件中查找包含root
的行,只取第一个匹配。 -
取反匹配
grep -v '^[[:space:]]*#' /etc/fstab
显示
/etc/fstab
文件中不被^[[:space:]]*#
匹配到的行。 -
忽略大小写
grep -i 'root' /etc/passwd
在
/etc/passwd
文件中查找包含root
或Root
的行。 -
显示行号
grep -n 'root' /etc/passwd
在
/etc/passwd
文件中查找包含root
的行,并显示行号。 -
统计匹配行数
grep -c 'root' /etc/passwd
统计
/etc/passwd
文件中包含root
的行数。 -
仅显示匹配字符串
grep -o 'root' /etc/passwd
仅显示
/etc/passwd
文件中匹配到的root
字符串。 -
静默模式
grep -q 'root' /etc/passwd
在
/etc/passwd
文件中查找包含root
的行,但不输出任何信息。 -
显示匹配行后的3行
grep -A 3 'root' /etc/passwd
在
/etc/passwd
文件中查找包含root
的行,并显示其后3行。 -
显示匹配行前的3行
grep -B 3 'root' /etc/passwd
在
/etc/passwd
文件中查找包含root
的行,并显示其前3行。 -
多个选项间的逻辑or关系
grep -e 'root' -e 'bash' /etc/passwd
在
/etc/pass堡
文件中查找包含root
或bash
的行。 -
匹配整个单词
grep -w 'root' /etc/passwd
在
/etc/passwd
文件中查找包含整个单词root
的行。 -
使用扩展正则表达式
grep -E 'root|bash' /etc/passwd
在
/etc/passwd
文件中查找包含root
或bash
的行。 -
根据模式文件处理两个文件相同内容
grep -f 123.txt 456.txt
匹配
123.txt
和456.txt
文件中内容相同的部分。 -
递归目录,但不处理软链接
grep -r 'root' /opt
递归过滤
/opt
目录中的文件,但不处理软链接。 -
递归目录,且处理软链接
grep -R 'root' /opt
递归过滤
/opt
目录中的文件,并处理软链接。
sort 命令,用于对文件内容进行排序
常用选项:
-f
:忽略大小写。-b
:忽略每行前面的空格。-n
:按照数字进行排序。-r
:反向排序。-u
:去重。-t
:指定字段分隔符。-k
:指定排序字段。-o
:将排序后的结果转存至指定文件。
-
基本用法
cat file | sort
对文件内容进行排序。
-
忽略大小写
cat file | sort -f
忽略大小写进行排序。
-
按数字排序
cat file | sort -n
按数字进行排序。
-
反向排序
cat file | sort -r
反向排序。
-
去重
cat file | sort -u
去重。
-
指定字段分隔符
cat file | sort -t ':'
指定字段分隔符为
:
。 -
指定排序字段
cat file | sort -k 2
指定按第二个字段排序。
-
输出到文件
cat file | sort -o sorted_file
将排序后的结果输出到
sorted_file
。
uniq 命令,用于报告或忽略文件中连续的重复行
常用选项:
-c
:统计连续重复的行的次数。-u
:显示仅出现一次的行。-d
:仅显示重复出现的行。
-
基本用法
cat file | uniq
报告或忽略文件中连续的重复行。
-
统计重复次数
cat file | uniq -c
统计连续重复的行的次数。
-
显示仅出现一次的行
cat file | uniq -u
显示仅出现一次的行。
-
显示连续重复的行
cat file | uniq -d
显示连续重复的行。
tr 命令示例,常用于对字符进行替换、压缩和删除。
常用选项:
-c
:保留字符集1的字符,其他字符用字符集2替换。-d
:删除所有属于字符集1的字符。-s
:将重复出现的字符串压缩为一个字符串。-t
:字符集2替换字符集1。
-
替换字符
echo "192.168.233.22" | tr '.' ' '
将
.
替换为空格。 -
大写转小写
echo "ABC" | tr "A-Z" "a-z"
将大写字母替换为小写字母。
-
保留指定字符
echo "abc" | tr -c 'ab' 'a'
保留
ab
,替换其他字符为a
。 -
删除指定字符
echo "abc" | tr -d 'ab'
删除
ab
,打印剩余字符。 -
压缩空行
cat file | tr -s '\n'
压缩空行为一个。
-
替换分隔符
echo $PATH | tr -s ":" "\n"
将
:
替换为换行。
cut 命令,于对字段进行截取和剪裁
常用选项:
-d
:指定分隔符。-f
:按字段进行截取。-b
:以字节为单位进行截取。-c
:以字符为单位进行截取。--complement
:排除所指定的字段。--output-delimiter
:更改输出内容的分隔符。
-
基本用法
cut -d ':' -f 1 /etc/passwd
以
:
为分隔符,截取第一个字段。 -
按字节截取
cut -b 1-10 file
以字节为单位截取前10个字节。
-
按字符截取
cut -c 1-10 file
以字符为单位截取前10个字符。
-
排除指定字段
cut -d ':' --complement -f 2 /etc/passwd
以
:
为分隔符,排除第二个字段。 -
更改输出分隔符
cut -d ':' -f 1-5 --output-delimiter='@' /etc/passwd
将分隔符转换为
@
。
split 命令,用于将大文件拆分为若干小文件
常用选项:
-l
:指定行数。-b
:指定文件的大小。
-
按行数拆分
split -l 20 test2.txt sc
将
test2.txt
按每20行拆分为多个文件,前缀为sc
。 -
按文件大小拆分
split -b 2m httpd-2.4.29.tar.bz2 sc
将
httpd-2.4.29.tar.bz2
按每2MB拆分为多个文件,前缀为sc
。
paste 命令,于按照字段进行文件的合并
常用选项:
-d
:指定文件的分隔符。-s
:将列和行的内容进行互相交换。
-
基本用法
paste a b
将文件
a
和b
按列合并。 -
指定分隔符
paste -d '|' a b
将文件
a
和b
按列合并,并使用|
作为分隔符。 -
交换列和行
paste -s a b
将文件
a
和b
的列和行内容互相交换。
eval 命令,变量扫描器
eval
命令适用于那些一次扫描无法实现功能的变量,会对变量进行两次扫描。
a=100
b=a
echo "普通echo输出的变量b的值为:" \$$b
eval echo "经过eval扫描输出变量b的值为:" \$$b