shell脚本--续

工具使用。

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

猜你喜欢

转载自blog.csdn.net/qq_36474990/article/details/81332660