加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – AWK:打印“print $0”时保留格式

发布时间:2020-12-14 00:31:05 所属栏目:Linux 来源:网络整理
导读:我试图使用AWK来操作两个文件.好吧,我实际上是在两者之间进行插值.由于我不太熟悉如何使用AWK同时处理两个文件,我首先进行粘贴 paste file_1 file_2 mixed_file 每个文件都包含以下类型的行 2.02646E+12 ERR 7.39921E+09 EG = 67 1.82357E+12 ERR 7.01570E+0
我试图使用AWK来操作两个文件.好吧,我实际上是在两者之间进行插值.由于我不太熟悉如何使用AWK同时处理两个文件,我首先进行粘贴

paste file_1 file_2 > mixed_file

每个文件都包含以下类型的行

2.02646E+12  ERR   7.39921E+09 EG =   67
   1.82357E+12  ERR   7.01570E+09 EG =   68
   8.65566E+11  ERR   4.35764E+09 EG =   69

新创建的文件’mixed_file’如下所示

2.02646E+12  ERR   7.39921E+09 EG =   67        2.02646E+12  ERR   7.39921E+09 EG =   67
 1.82357E+12  ERR   7.01570E+09 EG =   68        1.82357E+12  ERR   7.01570E+09 EG =   68
 8.65566E+11  ERR   4.35764E+09 EG =   69        8.65566E+11  ERR   4.35764E+09 EG =   69

这是我的问题:当我尝试做类似的事情

awk  ' / EG = / {$1=0.5*($1+$7)}  {print $0} ' mixed_file

我的格式完全错了

2026460000000 ERR 7.39921E+09 EG = 67 2.02646E+12 ERR 7.39921E+09 EG = 67
1823570000000 ERR 7.01570E+09 EG = 68 1.82357E+12 ERR 7.01570E+09 EG = 68
865566000000 ERR 4.35764E+09 EG = 69 8.65566E+11 ERR 4.35764E+09 EG = 69

我认为1美元的变化很可能是因为浮动字符与字符混合.原则上可以通过使用“printf”明确定义格式并避免这个问题,但我想更优雅的解决方案存在.

AWK专家,非常感谢您的帮助,

谢谢

亚历克斯

解决方法

重新分配回$0就是你所追求的:

awk  '/ EG = / {$0 = sprintf(" %7.5E%s",0.5*($1+$7),substr($0,13))} 1' mixed_file

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读