【发布时间】:2015-04-21 08:07:03
【问题描述】:
我已经看过几次这个问题,但我无法解决这个问题。
我有以下命令:
printf '%s\n' "${fa[@]}" | xargs -n 3 bash -c 'cat *-$2.ss | sed -n 11,1p ; echo $0 $1 $2;'
在哪里
printf '%s\n' "${fa[@]}"
O00238 115 03
O00238 126 04
而cat *-$2.ss 给出:
1 D C 0.999 0.000 0.000
2 L C 0.940 0.034 0.012
3 H C 0.971 0.005 0.015
4 P C 0.977 0.005 0.009
5 T C 0.970 0.009 0.018
6 L C 0.977 0.006 0.011
7 P C 0.864 0.027 0.014
8 P C 0.966 0.018 0.011
9 L C 0.920 0.038 0.039
10 K C 0.924 0.043 0.039
11 D C 0.935 0.036 0.035
12 R C 0.934 0.023 0.053
13 D C 0.932 0.022 0.046
14 F C 0.878 0.041 0.088
15 V C 0.805 0.031 0.198
16 D C 0.834 0.039 0.108
17 G C 0.882 0.019 0.071
18 P C 0.800 0.031 0.132
19 I C 0.893 0.039 0.070
20 H C 0.823 0.024 0.179
21 H C 0.920 0.026 0.070
22 R C 0.996 0.001 0.002
运行命令然后产生
11 D C 0.935 0.036 0.035
O00238 115 03
11 K C 0.449 0.252 0.270
O00238 126 04
偶数行是sed -n 11,1p的输出,奇数行是echo $0 $1 $2的输出
如何将输出配对在同一行,即
11 D C 0.935 0.036 0.035 O00238 115 03
11 K C 0.449 0.252 0.270 O00238 126 04
我试过了:
printf '%s\n' "${fa[@]}" | xargs -n 3 bash -c 'cat *-$2.ss | {sed -n 11,1p ; echo $0 $1 $2;} | tr "\n" " "'
这里建议:Concatenate in bash the output of two commands without newline character
不管怎样
O00238: -c: line 0: syntax error near unexpected token `}'
O00238: -c: line 0: `cat *-$2.ss | {sed -n 11,1p ; echo $0 $1 $2;} | tr "\n" " "'
有什么问题?
【问题讨论】:
-
原始数组中有什么?也许最好从那里开始,而不是从已有的管道中挑选。
-
如果您向我们提供原始输入和预期输出,那么我认为这可以在一个命令中完成。
-
感谢两者 - 添加了
printf '%s\n' "${fa[@]}"的输出 -
@brucezepplin 我们还需要知道
*-$2.ss中所有文件的内容(或其中的示例) -
这一切都可以在一个简单、清晰的 awk 命令中完成,但我看到您已经选择了一个答案,这会增加您的管道的复杂性,所以如果您想了解如何完成这一切立即发布后续问题。
标签: bash sed echo concatenation