我有一个包含826,838行的文本文件。 Text file looks like this(抱歉,无法让图片上传器工作)。
我正在使用sed(sed -n'2p; $ p')打印第二行和最后一行,但无法弄清楚如何将行放入范围格式。
当前输出:
1 3008.00 7380.00 497724.00 3158482.00 497724.00 3158482.00
826838 4744.00 7409.00 480729.00 3207718.00 480729.00 3207718.00
期望的输出:
1-826838 3008.00-4744.00 7380.00-7409.00 497724.00-480729.00 3158482.00-3207718.00 497724.00-480729.00 3158482.00-3207718.00
感谢您的帮助!
答案 0 :(得分:2)
这可能适合你(GNU sed):
sed -r '2H;$!d;H;x;:a;s/\n\s*(\S+)\s*(.*\n)\s*(\S+\s*)/\1-\3\n\2/;ta;P;d' file
将第2行和最后一行存储在保留空间(HS)中。在最后一行之后,交换到HS,然后重复地将第二行和第三行的第一个字段移动到第一行。最后只打印第一行。
答案 1 :(得分:1)
使用单个 awk 表达式(将获得所需的行并生成所需的范围):
awk 'NR==2{ split($0,a) }END{ for(i=1;i<=NF;i++) printf("%s\t",a[i]"-"$i); print "" }' file
输出:
1-826838 3008.00-4744.00 7380.00-7409.00 497724.00-480729.00 3158482.00-3207718.00 497724.00-480729.00 3158482.00-3207718.00