【发布时间】:2015-06-19 03:16:53
【问题描述】:
我正在尝试根据特定条件修改一行,然后打印到一个新文件中。不幸的是,该文件必须对列之间的许多空格敏感。典型的线条如下所示:
ATOM 301 H UREA 24 5.966 3.408 1.877 1.00 0.00 UREA N
这是我使用的命令:
awk '{if ($4 == "UREA" && $2%2 == 1) sub("H","TH",$3);print $0;}' origin.dat > final.dat
基本上,我希望 awk 打印完全相同的行(具有相同数量的空格),但替换为第三列。它打印的是:
ATOM 301 TH UREA 24 5.966 3.408 1.877 1.00 0.00 UREA H
我知道我可以使用 printf 或很长的打印语句,但是文件的列数可能会很麻烦。有没有一种优雅的方式在替换后打印一行?谢谢!
【问题讨论】:
标签: unix awk text-processing