Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 如何根据行数复制输出_Shell - Fatal编程技术网

Shell 如何根据行数复制输出

Shell 如何根据行数复制输出,shell,Shell,我有一个场景,根据第一个命令结果的输出复制第二个命令的值 下面是一个例子: 第一命令输出: /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/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/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
对于BASH来说很简单:

for i in `1st command`; do  echo $i,$(2nd command); done
对于BASH来说很简单:

for i in `1st command`; do  echo $i,$(2nd command); done

另一个选项是使用
sed
。只要您的第二个命令只有一个输出,您就可以使用命令替换第二个命令,并使用替换形式处理第一个命令的替换和
sed
,并在末尾附加逗号和第二个命令的输出,例如

sed "s/^.*$/&,$(./2ndcmd.sh)/" < <(./1stcmd.sh)
并且
2ndcmd.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
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

并将信息传输到
sed
命令)

另一个选项是使用
sed
。只要您的第二个命令只有一个输出,您就可以使用命令替换第二个命令,并使用替换形式处理第一个命令的替换和
sed
,并在末尾附加逗号和第二个命令的输出,例如

sed "s/^.*$/&,$(./2ndcmd.sh)/" < <(./1stcmd.sh)
并且
2ndcmd.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
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

然后将信息传输到您的
sed
命令)

如果第二个命令输出在两行中,那么最终输出是什么?是的,问得好。实际上,这些值应该附加到特定的第二个命令输出中。例如: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/raam/assigned/2018/sample/part01 examples.csv,100,20-jun-2018,raam/xyx/assigned/2018/sample/part03 examples.csv,100,20-2018,xyx/xyx/assigned/2018/sample/part03 examples.csv,100,20-jun-2018,xyxYou可以尝试
sed“s/^.*$/&,$(第二个命令)/“<如果第二个命令输出在两行中,那么最终输出是什么?好问题。实际上,这些值应该附加到特定的第二个命令输出中。例如: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/raam/assigned/2018/sample/part01 examples.csv,100,20-jun-2018,raam/xyx/assigned/2018/sample/part03 examples.csv,100,20-2018,xyx/xyx/assigned/2018/sample/part03 examples.csv,100,20-jun-2018,xyxYou可以尝试
sed“s/^.*$/&,$(第二个命令)/”<