如何将这些行置于范围格式?



我有一个包含 826,838 行的文本文件。文本文件如下所示(抱歉,无法让图像上传器工作(。

我正在使用 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

感谢您的帮助!

这可能对你有用(GNU sed(:

sed -r '2H;$!d;H;x;:a;s/ns*(S+)s*(.*n)s*(S+s*)/1-3n2/;ta;P;d' file

将第 2 行和最后一行存储在保留空间 (HS( 中。在最后一行之后,交换到 HS,然后重复将第二行和第三行的第一个字段移动到第一行。最后只打印第一行。

使用单个awk表达式(将获得所需的行并创建所需的范围(:

awk 'NR==2{ split($0,a) }END{ for(i=1;i<=NF;i++) printf("%st",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   

最新更新