这是示例文件:
somestuff...
all: thing otherthing
some other stuff
我想要做的是添加到以这样的开头的行all:
:
somestuff...
all: thing otherthing anotherthing
some other stuff
Answers:
$0
如果符合条件,则可以将文本附加到awk中:
awk '/^all:/ {$0=$0" anotherthing"} 1' file
/patt/ {...}
如果行与给出的模式匹配patt
,则执行内描述的动作{}
。/^all:/ {$0=$0" anotherthing"}
如果该行以开头(由表示^
)all:
,则追加anotherthing
到该行。1
作为真实条件,将触发默认操作awk
:打印当前行(print $0
)。这将始终发生,因此它将打印原始行或修改后的行。对于给定的输入,它返回:
somestuff...
all: thing otherthing anotherthing
some other stuff
请注意,您还可以提供文本以附加到变量中:
$ awk -v mytext=" EXTRA TEXT" '/^all:/ {$0=$0mytext} 1' file
somestuff...
all: thing otherthing EXTRA TEXT
some other stuff
awk: can't set $0
/usr/xpg4/bin/awk
“好” awk。
用awk解决方案:
awk '{if ($1 ~ /^all/) print $0, "anotherthing"; else print $0}' file
简单:如果该行以all
打印该行开头并加上“其他”,则仅打印该行。
awk '$1=="all:" {$(NF+1)="anotherthing"} 1'
condition {actions}
成对组成。如果condition
省略,则对每个记录执行操作。如果{actions}
省略,并且条件求值为true(数字就是这种情况1
),则默认操作是打印当前记录。