0
的第一行我有一组文件,当cat'ed在一起的格式击:我如何偷看并保存标准输入
NAME1.1 NAME2.1 NAME3.1 KEY1 VALUE1.1 KEY2 VALUE2.1
NAME1.2 NAME2.2 NAME3.2 KEY1 VALUE1.2 KEY2 VALUE2.2
...
NAME1.N NAME2.N NAME3.N KEY1 VALUE1.N KEY2 VALUE2.N
,并通过键值对文字阅读的报价繁琐,所以我想到了一个处理脚本是为了让我写了这个
#!/bin/bash
cat "[email protected]" \
| head -n1 \
| awk '{printf("NAME1 NAME2 NAME3 ");for(i=4;i<NF;i+=2){printf("%s ",$i)}printf("\n")}'
cat "[email protected]" \
|awk '{printf("%s %s %s ",$1,$2,$3);for(i=5;i<=NF;i+=2){printf("%s ",$i)}printf("\n")}'
正如你可以看到我在玩的文件只是两次抢标题行,所以我可以得到的值,并将其格式化为
NAME1 NAME2 NAME3 KEY1 KEY2
NAME1.1 NAME2.1 NAME3.1 VALUE1.1 VALUE2.1
NAME1.2 NAME2.2 NAME3.2 VALUE1.2 VALUE2.2
...
NAME1.N NAME2.N NAME3.N VALUE1.N VALUE2.N
有没有一种很好的方法来查看并复制第一行,以便我可以保存它?
我已经尝试了一个衬垫这样
(cat *.all_my_files \
| tee >(head -n1 | awk '{printf("NAME1 NAME2 NAME3 ");for(i=4;i<NF;i+=2){printf("%s ",$i)}printf("\n")}') \
| awk '{printf("%s %s %s ",$1,$2,$3);for(i=5;i<=NF;i+=2){printf("%s ",$i)}printf("\n")}' \
) | column -t
但这似乎退出时任stdouts的完成给我输出的不确定量