麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 服務器 > Linux服務器 > 正文

linux中xargs命令的各種使用技巧

2024-09-05 23:03:53
字體:
來源:轉載
供稿:網友

前言

xargs命令是把接收到的數據重新格式化,再將其作為參數提供給其他命令,下面介紹xargs命令的各種使用技巧,一起來看看吧。

一、將多行輸入轉換成單行輸入:

[root@host1 test]# echo -e "1 2 3 4 5 /n6 7 8 /n9 10 11 12" >example.txt[root@host1 test]# cat example.txt 1 2 3 4 5 6 7 8 9 10 11 12[root@host1 test]# cat example.txt |xargs 1 2 3 4 5 6 7 8 9 10 11 12 

將單行輸入轉換成多行輸出:

[root@host1 test]# cat example.txt | xargs -n 31 2 34 5 67 8 910 11 12 

自定義定界符進行轉換(默認的定界符是空格):

[root@host1 test]# echo "Hello:Hello:Hello:Hello" | xargs -d : -n 2Hello HelloHello Hello 

二、在腳本中運用:

[root@host1 test]# cat echo.sh #!/bin/bashecho $* '^-^'

當參數傳遞給echo.sh后,它會將這些參數打印出來,并且以"^-^"作為結尾:

[root@host1 test]# echo -e "Tom/nHarry/nJerry/nLucy" > args.txt[root@host1 test]# cat args.txt | xargs bash echo.sh Tom Harry Jerry Lucy ^-^[root@host1 test]# cat args.txt | xargs -n 2 bash echo.sh Tom Harry ^-^Jerry Lucy ^-^ 

在上面的例子中,我們把參數源都放入args.txt文件,但是除了這些參數,我們還需要一些固定不變的參數,比如:

[root@host1 test]# bash echo.sh Welcome Tom Welcome Tom ^-^ 

在上述命令執行過程中,Tom是變量,其余部分為常量,我們可以從"args.txt"中提取參數,并按照下面的方式提供給命令:

[root@host1 test]# bash echo.sh Welcome Tom [root@host1 test]# bash echo.sh Welcome Herry[root@host1 test]# bash echo.sh Welcome Jerry[root@host1 test]# bash echo.sh Welcome Lucy 

這時我們需要使用xargs中-I命令:

[root@host1 test]# cat args.txt | xargs -I {} bash echo.sh Welcome {} Welcome Tom ^-^Welcome Harry ^-^Welcome Jerry ^-^Welcome Lucy ^-^ 

-I {} 指定替換字符串,對于每一個命令參數,字符串{}都會被從stdin讀取到的參數替換掉,

使用-I的時候,命令以循環的方式執行,如果有4個參數,那么命令就會連同{}一起被執行4次,在每一次執行中{}都會被替換為相應的參數。

三、結合find使用

xargs和find是一對非常好的組合,但是,我們通常是以一種錯誤的方式運用它們的,比如:

[root@host1 test]# find . -type f -name "*.txt" -print | xargs rm -f 

這樣做是有危險的,有時會刪除不必刪除的文件,如果文件名里包含有空格符(' '),則xargs很可能認為它們是定界符(例如,file text.txt會被xargs誤認為file和text.txt)。

如果我們想把find的輸出作為xargs的輸入,就必須將-print0與find結合使用以字符null('/0')來分隔輸出,用find找出所有.txt的文件,然后用xargs將這些文件刪除:

[root@host1 test]# find . -type f -name "*.txt" -print0 | xargs -0 rm -f 

這樣就可以刪除所有的.txt文件了,xargs -0 將/0作為輸入定界符。

四、運用while語句和子shell

[root@host1 test]# cat files.txt | (while read arg ;do cat $arg;done)

這條命令等同于:

[root@host1 test]# cat files.txt | xargs -I {} cat {} 

在while循環中,可以將cat $arg替換成任意數量的命令,這樣我們就可以對同一個參數執行多條命令,也可以不借助管道,將輸出傳遞給其他命令,這個技巧適應于多種問題場景。子shell操作符內部的多個命令可作為一個整體來運行。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 成年人黄视频 | videos高潮 | 久久久久久久网站 | 羞羞色院91精品网站 | 91美女视频在线观看 | 少妇的肉体的满足毛片 | 久久久久久久久久91 | 国产91在线亚洲 | 色婷婷一区二区三区 | 成人性生活视频在线观看 | 成人小视频免费在线观看 | 精品国产一区二区三区四区在线 | 黄色免费高清网站 | 国产精品区一区二区三区 | 亚洲成人在线免费观看 | 精品国产91久久久久久久 | av在线免费看片 | 成人毛片免费视频 | 精品国产一区二区三区免费 | 亚洲精品久久久久久久久久久 | 毛片成人网 | 久久久久久久久成人 | 日韩黄色影视 | 亚洲第一成人在线观看 | 久久久精品视频免费看 | 久久99精品久久久久久久久久久久 | 97超级碰碰人国产在线观看 | www.国产免费 | 一本一道久久久a久久久精品91 | 亚洲极色 | 欧美成年人在线视频 | 九艹在线| 97久久精品一区二区三区观看 | 成人免费区 | 亚洲午夜不卡 | 中文字幕xxx| 99国产精品白浆在线观看免费 | 成人毛片免费看 | 毛片视频网址 | 国产一区精品在线观看 | 久久精品99久久久久久2456 |