我尝试修改文件的一列,然后打印结果。
awk -F"|" '{ if(NR!=1){$5 = $5+0.1} print $0}' myfile
Run Code Online (Sandbox Code Playgroud)
它做我想要的,但是在打印时,只有第一行保留其字段分隔符。(那个,我不修改)。
所以我可以使用,print $1"|"$2"|"$3"|"$4"|"$5"|"...但没有使用 $0 的解决方案吗?(例如,如果我不知道列数)
我相信,我可以用 轻松解决我的问题sed,但我awk现在尝试学习。
Wil*_*ard 18
@Sukminder 已经给出了简单的答案;我有一些关于您的示例代码的风格要点和有用的语法(如代码审查)。这开始是一个评论,但它变得越来越长。
OFS 是输出字段分隔符,如前所述。
$0是 - 的默认参数,print无需明确指定。另一个风格点:awk具有所谓的“模式”,就像内置的条件块。所以你也可以只使用:
awk -F'|' 'BEGIN {OFS = FS} NR != 1 {$5 += 0.1} {print}' myfile
Run Code Online (Sandbox Code Playgroud)
Run*_*ium 16
您可以设置输出字段分隔符, OFS。
'BEGIN { OFS = "|" } ...'
Run Code Online (Sandbox Code Playgroud)
或者:
'BEGIN { OFS = FS } ...'
Run Code Online (Sandbox Code Playgroud)
默认为<space>。