Linux命令之 expand split xargs


expand


# expand [-t] file

        将 [tab] 按键转成空格键

选项与参数:

-t     :后面可以接数字。一般来说,一个 tab 按键可以用 8 个空格键取代。


root@localhost:~/shell# cat file1

John Dagget 341 King Road Plymouth

Alice Ford 22 East Broadway Ricahmond

root@localhost:~/shell# expand -t 4 file1

John Dagget 341 King Road   Plymouth

Alice Ford  22 East Broadway    Ricahmond

root@localhost:~/shell# expand -t 8 file1

John Dagget     341 King Road   Plymouth

Alice Ford      22 East Broadway        Ricahmond

root@localhost:~/shell# expand -t 10 file1

John Dagget         341 King Road       Plymouth

Alice Ford          22 East Broadway    Ricahmond



split

        

[root@www ~]# split [-bl] file PREFIX

        依据文件大小或行数来分割,就可以将大文件分割成为小文件

选项与参数:

-b :后面可接欲分割成的文件大小,可加单位,例如 b, k, m 等;

-l :以行数来进行分割。

PREFIX :代表前导符的意思,可作为分割文件的前导文字。


root@localhost:~/shell# ll awk 

-rw-r--r-- 1 root Ricardo 40539  5月  8 20:30 awk

root@localhost:~/shell# split -b 15k awk awk  〈--前导文字

root@localhost:~/shell# ll awk*

-rw-r--r-- 1 root Ricardo 40539  5月  8 20:30 awk

-rw-r--r-- 1 root Ricardo 15360  5月  8 20:33 awkaa

-rw-r--r-- 1 root Ricardo 15360  5月  8 20:33 awkab

-rw-r--r-- 1 root Ricardo  9819  5月  8 20:33 awkac


root@localhost:~/shell# split -l 400 awk ssk

root@localhost:~/shell# ll ssk*

-rw-r--r-- 1 root Ricardo 17625  5月  8 20:34 sskaa

-rw-r--r-- 1 root Ricardo 18095  5月  8 20:34 sskab

-rw-r--r-- 1 root Ricardo  4819  5月  8 20:34 sskac


xargs

1. 简介

之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,

所以就有了 xargs 命令,例如:

find /sbin -perm +700 |ls -l

这个命令是错误的

find /sbin -perm +700 |xargs ls -l 这样才是正确的

xargs 可以读入 stdin 的资料,并且以空白字元或断行字元作为分辨,将 stdin 的资料分隔成为 arguments。 因为是以空白字元作为分隔,所以,如果有一些档名或者是其他意义的名词内含有空白字元的时候, xargs 可能就会误判。


2. 选项解释


-0 当 sdtin 含有特殊字元时候,将其当成一般字符,想/‘空格等

root@localhost:~/shell# echo "\\"

\

root@localhost:~/shell# echo "\\" | xargs echo



root@localhost:~/shell# echo "\\" | xargs -0 echo

\



-a file 从文件中读入作为 sdtin


root@localhost:~/shell# cat test

John Dagget, 341 King Road, Plymouth, Massachusetts

Alice Ford, 22 East Broadway, Ricahmond, Virginia

root@localhost:~/shell# xargs -a test echo

John Dagget, 341 King Road, Plymouth, Massachusetts Alice Ford, 22 East Broadway, Ricahmond, Virginia


-E flag ,注意有的时候可能会是-e flag 必须是一个以空格分隔的标志,当 xargs 分析到含有 flag 这个

标志的时候就停止。


root@localhost:~/shell# cat test | xargs -E ‘King‘ echo

John Dagget, 341


-p 当每次执行一个 argument 的时候询问一次用户。


root@localhost:~/shell# cat test | xargs -p echo

echo John Dagget, 341 King Road, Plymouth, Massachusetts ?...

echo Alice Ford, 22 East Broadway, Ricahmond, Virginia ?...


-n num 后面加次数,表示命令在执行的时候一次用的 argument 的个数,默认是用所有的。


root@localhost:~/shell# cat help 

test

yes 

no 

sd 

df

root@localhost:~/shell# cat help | xargs -i -n2 echo 

test yes

no sd

df


-t 表示先打印命令,然后再执行。


root@localhost:~/shell# cat help | xargs -t -i -n2 echo 

echo test yes 

test yes

echo no sd 

no sd

echo df 

df


-i 或者是-I,这得看 linux 支持了,将 xargs 的每项名称,一般是一行一行赋值给{},可以用{}代替。


root@localhost:~/shell# ls test*

test

root@localhost:~/shell# ls test| xargs -t -i mv {} {}.bak

mv test test.bak 

root@localhost:~/shell# ls tes*

test.bak


-d delim 分隔符,默认的 xargs 分隔符是回车,argument 的分隔符是空格,这里修改的是 xargs 的分隔


root@localhost:~/shell# cat help 

add rs rc sds

root@localhost:~/shell# cat help | xargs -i -p -d " " echo {}

echo add ?...y

echo rs ?...add

y

echo rc ?...rs

y

echo sds

 ?...rc

y

sds



郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。