输出为表格
[root@instance-1 tmp]# cat /etc/passwd | column -t -s :
[root@instance-1 tmp]# more /etc/passwd | column -t -s :
: 为文件中的分隔符
一个csv文件如下:
QuotaAmount,StartDate,OwnerName,Username
150000,2016-01-01,Chris Riley,trailhead9.ub20k5i9t8ou@example.com
150000,2016-02-01,Chris Riley,trailhead9.ub20k5i9t8ou@example.com
150000,2016-03-01,Chris Riley,trailhead9.ub20k5i9t8ou@example.com
150000,2016-01-01,Harold Campbell,trailhead14.jibpbwvuy67t@example.com
150000,2016-02-01,Harold Campbell,trailhead14.jibpbwvuy67t@example.com
150000,2016-03-01,Harold Campbell,trailhead14.jibpbwvuy67t@example.com
150000,2016-01-01,Jessica Nichols,trailhead19.d1fxj2goytkp@example.com
150000,2016-02-01,Jessica Nichols,trailhead19.d1fxj2goytkp@example.com
150000,2016-03-01,Jessica Nichols,trailhead19.d1fxj2goytkp@example.com
150000,2016-01-01,Catherine Brown,trailhead16.kojyepokybge@example.com
150000,2016-02-01,Catherine Brown,trailhead16.kojyepokybge@example.com
150000,2016-03-01,Catherine Brown,trailhead16.kojyepokybge@example.com
150000,2016-01-01,Kelly Frazier,trailhead7.zdcsy4ax10mr@example.com
150000,2016-02-01,Kelly Frazier,trailhead7.zdcsy4ax10mr@example.com
150000,2016-03-01,Kelly Frazier,trailhead7.zdcsy4ax10mr@example.com
150000,2016-01-01,Dennis Howard,trailhead4.wfokpckfroxp@example.com
150000,2016-02-01,Dennis Howard,trailhead4.wfokpckfroxp@example.com
150000,2016-03-01,Dennis Howard,trailhead4.wfokpckfroxp@example.com
输入命令
cat /tmp/bbb.txt | column -t -s ,
输出为:
QuotaAmount StartDate OwnerName Username
150000 2016-01-01 Chris Riley trailhead9.ub20k5i9t8ou@example.com
150000 2016-02-01 Chris Riley trailhead9.ub20k5i9t8ou@example.com
150000 2016-03-01 Chris Riley trailhead9.ub20k5i9t8ou@example.com
150000 2016-01-01 Harold Campbell trailhead14.jibpbwvuy67t@example.com
150000 2016-02-01 Harold Campbell trailhead14.jibpbwvuy67t@example.com
150000 2016-03-01 Harold Campbell trailhead14.jibpbwvuy67t@example.com
150000 2016-01-01 Jessica Nichols trailhead19.d1fxj2goytkp@example.com
150000 2016-02-01 Jessica Nichols trailhead19.d1fxj2goytkp@example.com
150000 2016-03-01 Jessica Nichols trailhead19.d1fxj2goytkp@example.com
150000 2016-01-01 Catherine Brown trailhead16.kojyepokybge@example.com
150000 2016-02-01 Catherine Brown trailhead16.kojyepokybge@example.com
150000 2016-03-01 Catherine Brown trailhead16.kojyepokybge@example.com
150000 2016-01-01 Kelly Frazier trailhead7.zdcsy4ax10mr@example.com
150000 2016-02-01 Kelly Frazier trailhead7.zdcsy4ax10mr@example.com
150000 2016-03-01 Kelly Frazier trailhead7.zdcsy4ax10mr@example.com
150000 2016-01-01 Dennis Howard trailhead4.wfokpckfroxp@example.com
150000 2016-02-01 Dennis Howard trailhead4.wfokpckfroxp@example.com
150000 2016-03-01 Dennis Howard trailhead4.wfokpckfroxp@example.com
替换文件内容
[root@instance-1 tmp]# cat aaa.txt | tr ',' ':' > ccc.txt
输出的ccc.txt如下:
QuotaAmount:StartDate:OwnerName:Username
150000:2016-01-01:Chris Riley:trailhead9.ub20k5i9t8ou@example.com
150000:2016-02-01:Chris Riley:trailhead9.ub20k5i9t8ou@example.com
150000:2016-03-01:Chris Riley:trailhead9.ub20k5i9t8ou@example.com
150000:2016-01-01:Harold Campbell:trailhead14.jibpbwvuy67t@example.com
150000:2016-02-01:Harold Campbell:trailhead14.jibpbwvuy67t@example.com
150000:2016-03-01:Harold Campbell:trailhead14.jibpbwvuy67t@example.com
150000:2016-01-01:Jessica Nichols:trailhead19.d1fxj2goytkp@example.com
150000:2016-02-01:Jessica Nichols:trailhead19.d1fxj2goytkp@example.com
150000:2016-03-01:Jessica Nichols:trailhead19.d1fxj2goytkp@example.com
150000:2016-01-01:Catherine Brown:trailhead16.kojyepokybge@example.com
150000:2016-02-01:Catherine Brown:trailhead16.kojyepokybge@example.com
150000:2016-03-01:Catherine Brown:trailhead16.kojyepokybge@example.com
150000:2016-01-01:Kelly Frazier:trailhead7.zdcsy4ax10mr@example.com
150000:2016-02-01:Kelly Frazier:trailhead7.zdcsy4ax10mr@example.com
150000:2016-03-01:Kelly Frazier:trailhead7.zdcsy4ax10mr@example.com
150000:2016-01-01:Dennis Howard:trailhead4.wfokpckfroxp@example.com
150000:2016-02-01:Dennis Howard:trailhead4.wfokpckfroxp@example.com
150000:2016-03-01:Dennis Howard:trailhead4.wfokpckfroxp@example.com
还可以将小写替换成大写
[root@instance-1 tmp]# cat bbb.txt | tr a-z A-Z > ddd.txt
[root@instance-1 tmp]# more ddd.txt
QUOTAAMOUNT,STARTDATE,OWNERNAME,USERNAME
150000,2016-01-01,CHRIS RILEY,TRAILHEAD9.UB20K5I9T8OU@EXAMPLE.COM
150000,2016-02-01,CHRIS RILEY,TRAILHEAD9.UB20K5I9T8OU@EXAMPLE.COM
150000,2016-03-01,CHRIS RILEY,TRAILHEAD9.UB20K5I9T8OU@EXAMPLE.COM
150000,2016-01-01,HAROLD CAMPBELL,TRAILHEAD14.JIBPBWVUY67T@EXAMPLE.COM
150000,2016-02-01,HAROLD CAMPBELL,TRAILHEAD14.JIBPBWVUY67T@EXAMPLE.COM
150000,2016-03-01,HAROLD CAMPBELL,TRAILHEAD14.JIBPBWVUY67T@EXAMPLE.COM
150000,2016-01-01,JESSICA NICHOLS,TRAILHEAD19.D1FXJ2GOYTKP@EXAMPLE.COM
150000,2016-02-01,JESSICA NICHOLS,TRAILHEAD19.D1FXJ2GOYTKP@EXAMPLE.COM
150000,2016-03-01,JESSICA NICHOLS,TRAILHEAD19.D1FXJ2GOYTKP@EXAMPLE.COM
150000,2016-01-01,CATHERINE BROWN,TRAILHEAD16.KOJYEPOKYBGE@EXAMPLE.COM
150000,2016-02-01,CATHERINE BROWN,TRAILHEAD16.KOJYEPOKYBGE@EXAMPLE.COM
150000,2016-03-01,CATHERINE BROWN,TRAILHEAD16.KOJYEPOKYBGE@EXAMPLE.COM
150000,2016-01-01,KELLY FRAZIER,TRAILHEAD7.ZDCSY4AX10MR@EXAMPLE.COM
150000,2016-02-01,KELLY FRAZIER,TRAILHEAD7.ZDCSY4AX10MR@EXAMPLE.COM
150000,2016-03-01,KELLY FRAZIER,TRAILHEAD7.ZDCSY4AX10MR@EXAMPLE.COM
150000,2016-01-01,DENNIS HOWARD,TRAILHEAD4.WFOKPCKFROXP@EXAMPLE.COM
150000,2016-02-01,DENNIS HOWARD,TRAILHEAD4.WFOKPCKFROXP@EXAMPLE.COM
150000,2016-03-01,DENNIS HOWARD,TRAILHEAD4.WFOKPCKFROXP@EXAMPLE.COM
xargs
xargs是十分有用的linux命令,其作用是将标准输入转为命令行参数。
$ echo "hello world" | xargs echo
hello world
又比如
[root@instance-1 tmp]# echo '/tmp' | xargs ls
aaa.txt bbb.txt ccc.txt ddd.txt out.txt systemd-private-61a25157fbac4dd0b4b8979ea69bc2c5-chronyd.service-FU75UO tmpWjRpgY
默认情况下,xargs将换行符和空格作为分隔符,把标准输入分解成一个个命令行参数。
比如下面命令新建了三个目录。
echo "one two three" | xargs mkdir
和find命令结合使用,比如查找当前目录下,名称txt结尾,其中包含Chris的文件。
[root@instance-1 tmp]# find . -name '*.txt' | xargs grep 'Chris'
./bbb.txt:150000,2016-01-01,Chris Riley,trailhead9.ub20k5i9t8ou@example.com
./bbb.txt:150000,2016-02-01,Chris Riley,trailhead9.ub20k5i9t8ou@example.com
./bbb.txt:150000,2016-03-01,Chris Riley,trailhead9.ub20k5i9t8ou@example.com
./ccc.txt:150000,2016-01-01,Chris Riley,trailhead9.ub20k5i9t8ou@example.com
./ccc.txt:150000,2016-02-01,Chris Riley,trailhead9.ub20k5i9t8ou@example.com
./ccc.txt:150000,2016-03-01,Chris Riley,trailhead9.ub20k5i9t8ou@example.com
./out.txt:150000:2016-01-01:Chris Riley:trailhead9.ub20k5i9t8ou@example.com
./out.txt:150000:2016-02-01:Chris Riley:trailhead9.ub20k5i9t8ou@example.com
./out.txt:150000:2016-03-01:Chris Riley:trailhead9.ub20k5i9t8ou@example.com
grep命令
- 查找bbb.txt文件中,2016-01-01和2016-03-01的数据
[root@instance-1 tmp]# cat bbb.txt | grep -nE '2016-01-01|2016-03-01'
- 查找bbb.txt文件中,包含aaa.txt每行数据的内容。
[root@instance-1 tmp]# cat bbb.txt | grep -nf aaa.txt
- 查找多个文件
[root@instance-1 tmp]# grep -n 'Harold' bbb.txt ccc.txt