工具使用。
sort
默认是升序,降序可用选项-r
-u 去除重复行
-n 以文本中的数字进行排序
-t 指定分隔符
uniq
-u 只显示不重复的行
-c 计数
-d 只显示重复的行
paste
拼接两个文件
-d 后面跟分隔符,将两个文件中的内容用分隔符隔开
-s 将每个文件的内容合并成一行
cut
-b 以字节为单位进行切割,(Linux下一个汉字三个字节)
-c 以字符为单位进行切割
-d 指定分隔符
xargs
产生某个指令的参数
擅长将标准输入的东西转化为命令行参数,将单行或多行的文本转换为其他格式。
它是构建单行命令的重要组件之一
-n 指定列数,并多行输出
-d 指定域分隔符,将特定列打散,按指定格式输出
// 表示以#为分隔符,并以三列输出
virtual-machine:shellStudy$ cat file
aaa
bbb
ccc
virtual-machine:echo "a#b#c#" | xargs -d# -n3
a b c
-I
-I
virtual-machine:cat file | xargs -I {} ./abc.sh 1 {} 2
1 aaa 2
1 bbb 2
1 ccc 2
-virtual-machine:shellStudy$ cat abc.sh
#!/bin/bash
echo $@
用xargs批量删除文件
-print0 将文件中的空格替换为NULL,再使用rm进行删除
sed
作为文本处理工具,本身是一个管道命令
把当前处理的行存储在一个缓冲区,这个区叫做模式空间,在该空间内对文本进行处理,然后将处理完成的文本发送到屏幕上,再接着处理下一行,直到文件末尾。
默认是由基本正则匹配
-
/ ... /p
//将以a开头以a结尾的行打印出来,注意,+要进行转义,否则无法识别
virtual-machine:shellStudy$ sed '/^a\+$/p' file
aaa
aaa
bbb
ccc
//加上-n之后,不显示原来的行,只显示匹配的行
virtual-machine:shellStudy$ sed '/^a\+$/p' -n file
aaa
-
/... /d
//将匹配的行进行删除
virtual-machine:shellStudy$ sed '/^a\+$/d' file
bbb
ccc
virtual-machine:shellStudy$ sed '/^c\+$/d' file
aaa
bbb
virtual-machine:shellStudy$ cat file
aaa
bbb
ccc
由上可以知道对于sed来说默认修改是不修改源文件的,如果要修改源文件需要加上-i选项
virtual-machine:shellStudy$ sed '/^a\+$/d' file -i
virtual-machine:shellStudy$ cat file
bbb
ccc
-
/ ... /s/A/B/
//将匹配到的进行替换,将A替换成B,在末尾加上g进行全文替换
virtual-machine:shellStudy$ sed '/^a\+$/s/a/b/' file
baa
bbb
ccc
virtual-machine:shellStudy$ sed '/^a\+$/s/a/b/g' file
bbb
bbb
ccc
定址:区间化输出
//表示匹配第二行并输出
virtual-machine:shellStudy$ sed '2p' file
aaa
bbb
bbb
ccc
//表示匹配第二三行并输出
virtual-machine:shellStudy$ sed '2,3p' file -n
bbb
ccc