我有一个场景可以根据第一个命令结果的输出来复制第二个命令的值。
下面是示例:
第一个命令输出:
/raam/assigned/2018/sample/part01-examples.csv,100,20-jun-2018
/raam/assigned/2018/sample/part02-examples.csv,100,20-jun-2018
/raam/assigned/2018/sample/part03-examples.csv,100,20-jun-2018
第二个命令输出:
raam
预期结果: 我需要结合两个结果,并需要复制第二个命令的值,如下所示
/raam/assigned/2018/sample/part01-examples.csv,100,20-jun-2018,raam
/raam/assigned/2018/sample/part02-examples.csv,100,20-jun-2018,raam
/raam/assigned/2018/sample/part03-examples.csv,100,20-jun-2018,raam
答案 0 :(得分:1)
简单的BASH:
for i in `1st command`; do echo $i,$(2nd command); done
答案 1 :(得分:1)
另一个sed
选项。只要您的第二个命令只有一个输出,就可以对第二个命令使用命令替换和对第一个命令使用进程替换,对sed
使用替换形成一个逗号并将第二个命令的输出附加到末尾,例如
sed "s/^.*$/&,$(./2ndcmd.sh)/" < <(./1stcmd.sh)
1stcmd.sh
文件提供以下输出:
$ ./1stcmd.sh
/raam/assigned/2018/sample/part01-examples.csv,100,20-jun-2018
/raam/assigned/2018/sample/part02-examples.csv,100,20-jun-2018
/raam/assigned/2018/sample/part03-examples.csv,100,20-jun-2018
和2ndcmd.sh
文件提供以下输出:
$ ./2ndcmd.sh
raam
使用/输出示例
$ sed "s/^.*$/&,$(./2ndcmd.sh)/" < <(./1stcmd.sh)
/raam/assigned/2018/sample/part01-examples.csv,100,20-jun-2018,raam
/raam/assigned/2018/sample/part02-examples.csv,100,20-jun-2018,raam
/raam/assigned/2018/sample/part03-examples.csv,100,20-jun-2018,raam
仔细检查一下,如果还有其他问题,请告诉我。
(由于< <(...)
是bashism,如果您需要POSIX shell兼容性,则可以这样做:
$ ./1stcmd.sh | sed "s/^.*$/&,$(./2ndcmd.sh)/"
并将信息通过管道传递到您的sed
命令)