2011-12-14 13 views
0

のためのパラメータとしてパイプで連結された出力の各行使用私はアプリケーション(myappという)を持っているスクリプト

結果:

abc|myparam1|def 
ghi|myparam2|jkl 
mno|myparam3|pqr 
stu|myparam4|vwx 
のgrepで

と私は以下のように私のパラメータを取得することができますセッド

しかし、これらのmyparamx値をスクリプトのパラメータとして各パラメータに対して実行します。

myscript.sh myparam1 
myscript.sh myparam2 
etc. 

すべてのヘルプは大xargsを参照してください

+0

Pfff、ここに投稿することはほぼ不可能 – user1098203

+0

ダブルセドの無駄な使用。 'sed -e 's/^ [^ |] * //' | 'sed -e 's/|。* //''は 'sed -e 's/^ [^ |] * //' -e 's/|。* //''や 'sed- eの/^[^ |] * //; s/|。* // '' –

+0

はい、sedはすでに読みにくいので、ダブルセッドはそれを簡単にすることでした。とにかくありがとう – user1098203

答えて

3

を高く評価しました。たとえば:

myapp | grep '|' | sed -e 's/^[^|]*//' | sed -e 's/|.*//' | xargs -n 1 myscript.sh 
+0

xargsが確かに行く方法であることがわかりました。 – user1098203

+0

xargsが確かに行く方法であることがわかりました。お返事ありがとうございます。非常に有益です。 – user1098203

+0

「sed」と「cut」の両方を 'cut -f 2 -d' | ''に置き換えてください。 –

2

が、これは助けることができるかもしれませ -

myapp | awk -F"|" '{ print $2 }' | while read -r line; do /path/to/script/ "$line"; done 
1

私はダークファルコンからxargs -n 1ソリューションを好きで、while readは物事のような種類のための古典的なツールですが、ちょうど完全性について:

サイドノートとして
myapp | awk -F'|' '{print "myscript.sh", $2}' | bash 

、2ndフィールドの抽出について言えば、あなたはcutを使用することができます。

myapp | cut -d'|' -f 1 # -f 1 => second field, starting from 0 
関連する問題