我有一个文本文件如下。
A/B C/D E/F
1 0.6 4.6
2.3 2 0.78
A/B C/D E/F
2 5 2
3 6 4
...
...
...
...
A/B C/D E/F
5 0.8 0.88
8.88 0.35 0.68
我必须以下列方式更改行。我怎么能用awk做到这一点?如何将输出保存到电子表格?
A B C D E F
1 2.3 0.6 2 4.6 0.78
2 3 5 6 2 4
...
...
...
5 8.8 0.8 0.35 0.88 0.68
任何帮助或建议都将不胜感激。
答案 0 :(得分:1)
awk
awk '
BEGIN{
RS=""
print "A", "B"
}
{
print $4, $7
}' input.txt
A B
1 2.3
2 3
当RS
为empty
时,awk会将数据解释为多行记录。
答案 1 :(得分:1)
我同意kev
。将记录分隔符从换行符(默认)更改为空:
awk 'BEGIN { RS=""; OFS=FS="\t"; print "A", "B", "C", "D", "E", "F" } { split ($2, one, " "); split ($3, two, " "); print one[1], two[1], one[2], two[2], one[3], two[3] }' file.txt
结果:
A B C D E F
1 2.3 0.6 2 4.6 0.78
2 3 5 6 2 4
修改强>
我认为您可能需要首先删除前导和/或滞后空格(我会使用sed
),然后将输出管道输入上面的awk
:
sed 's/^[ \t]*//; s/[ \t]*$//' file.txt | awk 'BEGIN { RS=""; OFS=FS="\t"; print "A", "B", "C", "D", "E", "F" } { split ($2, one, " "); split ($3, two, " "); print one[1], two[1], one[2], two[2], one[3], two[3] }'
HTH