我有一个应用程序(myapp),它为我提供了多行输出
结果:
abc|myparam1|def
ghi|myparam2|jkl
mno|myparam3|pqr
stu|myparam4|vwx
使用grep和sed我可以得到如下参数
myapp | grep '|' | sed -e 's/^[^|]*//' | sed -e 's/|.*//'
但是希望将这些myparamx值作为脚本的参数来为每个参数执行。
myscript.sh myparam1
myscript.sh myparam2
etc.
任何帮助非常感谢
答案 0 :(得分:3)
请参阅xargs
。例如:
myapp | grep '|' | sed -e 's/^[^|]*//' | sed -e 's/|.*//' | xargs -n 1 myscript.sh
答案 1 :(得分:2)
可能会有所帮助 -
myapp | awk -F"|" '{ print $2 }' | while read -r line; do /path/to/script/ "$line"; done
答案 2 :(得分:1)
我喜欢Dark Falcon的xargs -n 1
解决方案,while read
是这类事物的经典工具,但仅仅是为了完整性:
myapp | awk -F'|' '{print "myscript.sh", $2}' | bash
作为旁注,谈到第二个字段的提取,您可以使用cut
:
myapp | cut -d'|' -f 1 # -f 1 => second field, starting from 0