Linux文档编辑相关命令
1. grep
grep (global regular expression) 命令用于查找文件里符合条件的字符串或正则表达式。
1.1 语法
grep [options] pattern [files]
1.2 常用选项
- -i:忽略大小写进行匹配。
- -v:反向查找,只打印不匹配的行。
- -n:显示匹配行的行号。
- -r:递归查找子目录中的文件。
- -l:只打印匹配的文件名。
- -c:只打印匹配的行数。
1.3 实例
- 在文件 file.txt 中查找字符串 “hello”,并打印匹配的行
grep hello file.txt
- 在文件夹 dir 中递归查找所有文件中匹配字符串 “hello” 的行,并打印匹配行所在的文件名和行号
grep -rn hello dir/
- 在标准输入中查找字符串 “world”,并只打印匹配的行数
echo "hello world" | grep -c world
- 在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印匹配的行
grep test *file
- 查找文件名中包含 test 的文件中不包含 test 的行
grep -v test *test*
2. tr
tr 命令用于转换或删除文件中的字符。
2.1 语法
tr [-cdst] [第一字符集] [第二字符集]
2.2 常用选项
- -c, --complement:反选设定字符。也就是符合第一字符集的部分不做处理,不符合的部份才进行转换。
- -d, --delete:删除指令字符。
- -s, --squeeze-repeats:缩减连续重复的字符成指定的单个字符。
- -t, --truncate-set1:削减第一字符集指定范围,使之与第二字符集设定长度相等。
2.3 实例
- 将文件 testfile 中的小写字母全部转换成大写字母
cat testfile | tr a-z A-Z
- 将文件 testfile 中的每个单词单独成一行
cat testfile | tr -s ' ' '\n'
3. wc
wc命令用于计算字数。
3.1 语法
wc [-clw] [文件…]
3.2 常用选项
- -c:显示Bytes数。
- -l:显示行数。
- -w:显示字数。
3.3 实例
- 默认情况下,wc 将计算指定文件的行数、字数以及字节数
wc testfile
4. sort
sort 命令用于将文本文件内容加以排序。
4.1 语法
sort [-bcdfimMnr] [文件] [-k field1[,field2]]
4.2 常用选项
- -b:忽略每行前面开始出的空格字符。
- -c:检查文件是否已经按照顺序排序。
- -d:排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
- -f:排序时,将小写字母视为大写字母。
- -i:排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
- -m:将几个排序好的文件进行合并。
- -M:将前面3个字母依照月份的缩写进行排序。
- -n:依照数值的大小排序。
- -r:以相反的顺序来排序。
4.3 实例
- 对文件的行进行排序
sort testfile
testfile的原有内容为:
test 30
Hello 95
Linux 85 结果如下:
Hello 95
Linux 85
test 30
注:sort 命令将以默认的方式将文本文件的第一列以 ASCII 码的次序排列,并将结果输出到标准输出。
- 使用 -k 参数设置对第二列的值进行重排
sort testfile -k 2
test 30
Linux 85
Hello 95
5. uniq
uniq 命令用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用。
5.1 语法
uniq [-cdu] [输入文件] [输出文件]
5.2 常用选项
- -c或–count:在每列旁边显示该行重复出现的次数。
- -d或–repeated:仅显示重复出现的行列。
- -u或–unique:仅显示出一次的行列。
- [输入文件] 指定已排序好的文本文件。如果不指定此项,则从标准读取数据;
- [输出文件] 指定输出的文件。如果不指定此选项,则将内容显示到标准输出设备(显示终端)。
5.3 实例
- 文件 testfile 中第 2、3、5、6、7、9行为相同的行,使用 uniq 命令删除重复的行
uniq testfile
testfile的原有内容为:
test 30
test 30
test 30
Hello 95
Hello 95
Hello 95
Hello 95
Linux 85
Linux 85使用 uniq 命令删除重复的行后,有如下输出结果:
test 30
Hello 95
Linux 85
- 检查文件并删除文件中重复出现的行,并在行首显示该行重复出现的次数
uniq -c testfile
结果如下:
3 test 30 #前面的数字的意义为该行共出现了3次
4 Hello 95 #前面的数字的意义为该行共出现了4次
2 Linux 85 #前面的数字的意义为该行共出现了2次
注:当重复的行不相邻时,uniq 命令是不起作用的。例如,文件内容为以下时,uniq 命令不起作用。
test 30
Hello 95
Linux 85
test 30
Hello 95
Linux 85
test 30
Hello 95
Linux 85
这时我们可以采用 sort + uniq
$ sort testfile | uniq
Hello 95
Linux 85
test 30