我正在尝试执行以下操作,但我还没有成功。我有两个文件:
header1
data11
data12
data13
header2
data21
data22
data23
header3
data31
data32
data33
header4
data41
data42
data43
...
headerN
dataN1
dataN2
dataN3
,另一个是
header1 num11 num12 num13 num14
header2 num21 num22 num23 num24
header5 num51 num52 num53 num54
header8 num81 num82 num83 num84
...
我需要输出一个文件,从文件2中选择标题并以下列格式打印出来(使用上面的例子)
header1
data11
num11
num13
data12
data13
header2
data21
num21
num23
data22
data23
header5
data51
num51
num53
data52
data53
...
我希望它很明确:我需要标题(应该识别为两个文件共有),文件1的第一行,文件2的第二和第四列,文件的其余数据1表示该标题,依此类推。我一直在尝试使用awk但是我无法通过一个简单的“两个文件单行”得到我想要的东西:)
编辑:抱歉误导。我不要求一个班轮。我只是说我使用了一些awk和grep one-liners。我想要一些仅适用的东西:)此外,标题是字母数字,没有简单的模式。我需要识别整个字符串。答案 0 :(得分:3)
这是我提出的丑陋的一句话(在命令行上开发):
while read h n1 n2 n3 n4; do echo $h; sed -n -e "/^$h\$/{" -e n -e p -e q -e '}' file1 ; echo $n1; echo $n3; sed -n -e "/^$h\$/{" -e n -e n -e p -e n -e p -e q -e '}' file1 ; done <file2
我假设file2
中的每个标题都在file1
中有相应的标题