使用 awk 打印 $0 时如何保留字段分隔符

使用 awk 打印 $0 时如何保留字段分隔符

我尝试修改文件的一列,然后打印结果。

awk -F"|" '{ if(NR!=1){$5 = $5+0.1} print $0}' myfile

它执行了我想要的操作,但是在打印时,只有第一行保留其字段分隔符。(我不修改)。

所以我可以使用print $1"|"$2"|"$3"|"$4"|"$5"|"...,但没有使用 $0 的解决方案吗? (例如,如果我不知道列数)

我相信,我可以轻松解决我的问题,但我现在sed尝试学习。awk

答案1

@Sukminder 已经给出了简单的答案;我有一些关于示例代码的风格点和有用的语法(例如代码审查)。这最初是一条评论,但越来越长。

OFS是输出字段分隔符,如前所述。

$0是 - 的默认参数print,无需显式指定。另一个风格点:awk有所谓的“模式”,就像内置的条件块。所以你也可以使用:

awk -F'|' 'BEGIN {OFS = FS} NR != 1 {$5 += 0.1} {print}' myfile

答案2

您可以设置输出字段分隔符, OFS.

'BEGIN { OFS = "|" } ...'

或者:

'BEGIN { OFS = FS } ...'

这是<空格>默认情况下。

相关内容