【发布时间】:2016-02-12 17:43:27
【问题描述】:
假设以下文件
#zvview.exe
#begin Present/3
77191.0000 189.320100 0 0 3 0111110 16 1
-8.072430+6-8.072430+6 77190 0 1 37111110 16 2
37 2 111110 16 3
8.115068+6 0.000000+0 8.500000+6 6.390560-2 9.000000+6 6.803440-1111110 16 4
9.500000+6 1.685009+0 1.000000+7 2.582780+0 1.050000+7 3.260540+0111110 16 5
37 2 111110 16 18
我想做的是在两列中打印,即第 6 行之后的字段。这可以使用NR 来完成。棘手的部分如下:每隔一个字段,应该在一列中,并在符号前添加一个E,以便输出文件看起来像这样
8.115068E+6 0.000000E+0
8.500000E+6 6.390560E-2
9.000000E+6 6.803440E-1
9.500000E+6 1.685009E+0
1.000000E+7 2.582780E+0
1.050000E+7 3.260540E+0
从您看到的输出文件中,我只想在$6 中保留length($6)=10 字符。
如何在 awk 中做到这一点?
【问题讨论】:
-
你怎么知道第6个字段在哪里结束?指数总是只有一位吗?第 7 个字段的长度是否始终相同?还有什么?
-
@CasimiretHippolyte 感谢您的评论!我知道我的指数永远只有一位。关于第 7 个字段,它很可能总是有 2 位数字。
-
脚本如何知道不打印第 8 行的内容?因为你只想要第 6 和第 7 或者因为关于行的内容或什么?
-
@EdMorton : 我将使用
NR>= 6 && NR<=whatever选择所需的行!
标签: awk