初期設定
以下のような内容のファイルがあるとします
% cat hoge.txt
a 1 x
b 2 y
c 3 z
awkを使うと任意の列のデータを取り出せます
$2と$1に変えるとa, b, cになるはず
1
2
3
ファイルの中身を使ってディレクトリを作成したい
この結果を使って1と2と3というディレクトリを作りたいとして、
としてみると・・・
mkdir: missing operand
Try 'mkdir --help' for more information.
zsh: done awk '{print $2}' hoge.txt |
zsh: exit 1 mkdir -p
というエラーが出てうまくいきませんでした
これをするにはxargsというコマンドを使って、この結果をコマンドに渡します
これでディレクトリの作成ができました
-Iオプションについて
-I {}
というのは、awkからの出力を受け取って、それをパイプ後のどこに配置するかを指定できます
ちなみに {}は別になんでもOKです、-Iの後にある文字と後ろの文字が対応していればOK
(texのverb|と同じような感じ)
とすると
1_1
2_2
3_3
というディレクトリができました
複数の変数をxargsの後のコマンドに渡したいときはどうするか不明
また必要なら調べます
-pオプションについて
これはドライランをするオプション
実際に実行せずに、実行したらどういうコマンドが実行されてるのか表示してくれる
参照:xargsにテキストファイルのデータを行ごとに渡して反復処理する方法 - おひとり
xargsを使った他の例
12 Practical Examples of Linux Xargs Command for Beginners
webでこの記事が紹介されてて読んだけどわからん・・・
たぶん自分は使うことはなさそう