Site cover image
shell コマンドを任意の引数で実行するxargsの便利な使い方

bashやzshなどのシェルにおいて、xargsコマンドは知ってると便利だけど知らない人にとってはよくわからないコマンドです。

このエントリでは、普段私がよく使うxargsコマンドの使い方を紹介します。

大量のIDが行ごとに記載されたファイルがあるとします(説明のために30個にしています)。

$ wc -l ids.txt
    30 ids.txt

$ head -n 3 ids.txt
1
2
3

$ tail -n 3 ids.txt
28
29
30

これらのIDを、例えばCSV出力やAPIリクエストパラメータのために、10個ずつカンマ区切りにしたいとします。

そんなときはxargs -nを使うと便利です。

出力をxargs -n Nにパイプすると、N個の引数として指定したコマンドに渡すことができます。

# 指定した数の引数として任意のコマンドに渡せる
$ cat ids.txt | xargs -n 10 echo                     
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30

あとは、空白をカンマに置換してあげればOKです。

$ cat ids.txt | xargs -n 10 echo | sed -e 's/ /,/g'
1,2,3,4,5,6,7,8,9,10
11,12,13,14,15,16,17,18,19,20
21,22,23,24,25,26,27,28,29,30
Thank you!
Thank you!
URLをコピーしました

コメントを送る

コメントはブログオーナーのみ閲覧できます