日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

7. xargs

發布時間:2024/4/17 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 7. xargs 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

xargs 命令應該緊跟在管道操作符之后。它以標準輸入作為主要的源數據流,并使用stdin并通過提供

命令行參數來執行其他命令。例如:

command | xargs

xargs可以作為一種替換方式,作用類似于find命令中的 -exec 參數。下面介紹一些借助xargs 命令能夠

實現的技巧。

一. 將多行輸入轉換成單行輸出。

只需要將換行符移除,再用“ ” (空格)進行代替,就可以實現多行輸入的轉換。

cat example.txt

1 2 3 4 5 6

7 8 9 10

11 12

則:

cat example.txt | xargs

1 2 3 4 5 6 7 8 9 10 11 12

二. 將單行輸入轉換成多行輸出

指定每行最大的參數數量n, 我們可以將任何來自stdin的文本劃分成多行,每行n個參數。每一個參數都是由“ ” (空格)隔開的字符串??崭袷悄J的定界符,依照下面的方法可以將單行劃分成多行:

cat example.txt | xargs -n 3

工作原理:

我們可以用自己的定界符來分隔參數。用-d選項作為輸入指定一個定制的定界符

echo "splitXsplitXsplitXsplit" | xargs -d X

默認情況下,xargs采用內部字段分隔符(IFS)作為輸入定界符。

1.讀取stdin, 將格式化參數傳遞給命令

cat args.txt

arg1

arg2

arg3

cat args.txt | xargs -n 1 ./cecho.sh

在這個例子中,我們直接為特定的命令提供命令行參數。但實際上除了他們外,我們還需要一些固定不變的參數,如:

./cecho.sh -p arg1 -l

xargs有一個選項-I,我們可以用-I指定一個替換字符串,這個字符串會在xargs擴展的時候被替換掉。

cat args.txt | xargs -I {} ./cecho.sh -p {} -l

cat args.txt | xargs -n 2 | xarg -I {} ./cecho -p {} -l

2. 結合find使用xargs

xargs 和 find 算是一對死黨。兩者結合使用可以讓任務變得更輕松。不過人們卻通常以一種錯誤的組合方式使用它們。例如:

find . -type f -name "*.txt" -print | xargs rm -f

這樣做很危險。有時可能會刪除不必要刪除的文件。我們沒法預測分隔find命令輸出結果的定界符究竟是'\n' 還是 ' '.

很多文件名中都包行有空格符,而xargs很可能會誤以為它們是定界符。

只要我們把find 的輸出作為xargs的輸入,就必須將-print0 與 find 結合使用,以字符null來分隔輸出。

find . -type f -name "*.txt" -print0 | xargs -0 rm -f

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

3. 統計源代碼中所有c程序文件的行數。

統計c程序文件的行數是大多數程序員都會遇到的活兒

find path -type f -name "*.c" -print0 | xargs -0 wc -l

轉載于:https://www.cnblogs.com/thorngirl/p/4202450.html

總結

以上是生活随笔為你收集整理的7. xargs的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。