grep
字符串查找,默认用BRE grep [options] ‘string’ filename -E 使用ERE -a 以文本文件方式搜索 -c 计算找到的符合行的次数 -i 忽略大小写 -n 顺便输出行号 -v 反向选择,即显示不包含匹配文本的所有行 -h 查询多文件时不显示文件名 -l 查询多文件时只输出包含匹配字符的文件名 -s 不显示不存在或无匹配文本的错误信息
grep -c "abc" test.txt
grep -i "May" test.txt
grep -n "abc" test.txt
grep -v "abc" test.txt
grep "a\{3,\}" test.txt
grep "a\{3,7\}" test.txt
tr
字符转换 -c:取反 -d:删除 -s:把连续重复的字符以单独一个字符表示
# 将文件file中出现的"abc"替换为"xyz"
cat file | tr " abc" " xyz" > new_file
# 使用tr命令“统一”字母大小写
cat file | tr [a-z] [A-Z] > new_file
cat file | tr [A-Z] [a-z] > new_file
# 把文件中的数字0-9替换为a-j
cat file | tr [0-9] [a-j] > new_file
# 删除文件file中出现的"Snail"字符
cat file | tr -d " Snail" > new_file
【注意】这里,凡是在file文件中出现的'S','n','a','i','l'字符都会被删除!而不是紧紧删除出现的"Snail”字符串
# 删除文件file中出现的换行'\n'、制表'\t'字符,不可见字符都得用转义字符来表示
cat file | tr -d " \n\t" > new_file
# 删除“连续着的”重复字母,只保留第一个
cat file | tr -s [a-zA-Z] > new_file
# 删除空行
cat file | tr -s " \n" > new_file
# 删除Windows文件“造成”的'^M'字符
cat file | tr -d " \r" > new_file
cat file | tr -s " \r" " \n" > new_file
【注意】这里-s后面是两个参数"\r" 和"\n" ,用后者替换前者
# 用空格符\040替换制表符\011
cat file | tr -s " \011 " " \040 " > new_file
# 把路径变量中的冒号":",替换成换行符"\n"
echo $PATH | tr -s " :" " \n"
cut
从输入中截取选定的部分 -d 指定分隔符 -f 指定字段 -c 指定字符
cut -d : -f 1,7 /etc/passwd
who | cut -c 1 -16 ,26 -38
join
基于共同的键值,合并记录 -1 filed1 -2 filed2 指明要结合的字段 -t 指定分隔符
1. txt:
aaa 1 2 3 4
bbb 1 2 3 4
xxx 1 2 3 4
ccc 1 2 3 4
ddd 1 2 3 4
ooo 1 2 3 4
2. txt:
aaa a b c d
bbb a b c d
zzz a b c d
ccc a b c d
ddd a b c d
yyy a b c d
join 1. txt 2. txt:
aaa 1 2 3 4 a b c d
bbb 1 2 3 4 a b c d
join -o 1.1 -o 1.2 -o 2.4 1. txt 2. txt
aaa 1 c
bbb 1 c
sort
将输入的文本排序 -b:忽略开头的空白 -c:检查输入是否已经排序 -d:字典顺序,仅文字、数字和空白有意义 -g:浮点值排序 -f:忽略大小写 -i:忽略无法打印的字符 -k:定义排序键值 -m:将已排序的输入文件,合并为一个排序后的输出数据流 -n:整数排序 -o:指定输出文件 -r:逆序排序 -t:指定分隔符 -u:只保留唯一的记录
sort -t: -k2 /etc/passwd
sort -t: -k2,2 /etc/passwd
sort -t: -k2,5 /etc/passwd
sort -t: -k2.4 ,5.6 /etc/passwd
sort -t: -k3n,3 /etc/passwd
sort -t: -k3nr,3 /etc/passwd
sort -t: -k3n -k4n /etc/passwd
sort -t: -k3n,3 -u /etc/passwd
uniq
数据过滤 -c:在每行前加上重复次数 -d:仅显示重复的行 -u:仅显示不重复的行
fmt
重新格式化段落 -s:仅切割较长的行 -w n:设置输出宽度
wc
head
tail
显示行尾 -n -f:每隔1秒显示文件的行尾,看日志文件时很有用;此选项不可用于脚本
dd
od
file
strings
pr
文本处理命令
tr grep cut join sort wc pr head tail od dd file strings