Linux xargs將輸出資料流轉換成命令參數,linuxxargs

來源:互聯網
上載者:User

Linux xargs將輸出資料流轉換成命令參數,linuxxargs
介紹

我們可以利用管道將一個命令的“標準輸出”作為另一個命令的“標準輸入”;但是這裡的標準輸出都是資料流,但是某些命令的輸入只接收參數命令不接收資料流,那麼這種一般的方法就無法實現,這裡就需要藉助xargs命令。xargs可以將資料流轉換成命令參數作為標準輸入的參數,接下來就來詳細瞭解xargs的用法。

 

 

多行轉換

[root@localhost test]# cat test0 1 2 3 45 6 7 8 9

在當前的test的表中有0-9的兩行記錄,每個數字間以空格隔開

1.單行顯示,預設xargs會將分行符號以空格替換

[root@localhost test]# cat test|xargs 0 1 2 3 4 5 6 7 8 9

2.多行顯示,使用-n number參數

number值表示每行顯示的參數的數量且number必須大於0,如果number大於參數的數量就以參數最大的數量顯示,例如每行顯示一個參數。

cat test|xargs -n 1

界定符分隔

 xargs可以以單個字元作為一段文本的分界符,將文本拆分成多個部分以空格隔開,但是分解符只能是單個字元,不能是組合字元。

1.根據字元拆分

echo "111a222a333a444" |xargs -d a

2.同時還可以結合-n參數拆分成多行顯示

echo "111a222a333a444" |xargs -d a -n 2

 

命令傳參

接下來就可以看一下xargs怎樣將標準輸出資料流轉換成命令參數

接下來就以一個簡單的bash舉例

#!/bin/bashecho $* "end"

這個參數接收參數並返回原參數並以end作為行結尾

從上可以看出xargs將標準的輸出作為參數傳遞給了bashtest

 

其它用法

當傳遞的命令存在多個參數而只需要給單獨的某個參數傳參數時,可以使用-I replace-str

vim bashtest

#!/bin/bashecho $1 $2 "end"

我只需要將xargs的參數傳遞給$1

cat test|xargs -n 1 |xargs -I str  ./bashtest str a

 注意:兩邊的replace-str的名稱必須保持一致,名稱不限。

總結

 xargs的提示還有很多,有興趣可以去慢慢摸索

 

 

 

備忘:

    作者:pursuer.chen

    部落格:http://www.cnblogs.com/chenmh

本網站所有隨筆都是原創,歡迎大家轉載;但轉載時必須註明文章來源,且在文章開頭明顯處給明連結。

《歡迎交流討論》

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.