有用的linux命令列表

177 阅读5分钟

输出为表格

[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命令

  1. 查找bbb.txt文件中,2016-01-01和2016-03-01的数据
[root@instance-1 tmp]# cat bbb.txt | grep -nE '2016-01-01|2016-03-01'

image.png

  1. 查找bbb.txt文件中,包含aaa.txt每行数据的内容。
[root@instance-1 tmp]# cat bbb.txt | grep -nf aaa.txt

image.png

  1. 查找多个文件
[root@instance-1 tmp]# grep -n 'Harold' bbb.txt ccc.txt

image.png