使用AWK将变量写入冒号后的第5行

时间:2019-07-08 23:59:21

标签: awk

我有一个文件,其中包含如下所示的变量:

Favorite color of John:Blue
Favorite color of Cindy:Red
Favorite color of Greg:Orange
Favorite color of Gary:Red
Favorite color of Patty:White
Favorite color of Meg:Purple
Favorite color of Jason:Pink

如何通过指定行号来编写AWK命令以更改冒号后的文本?我不能以字符数或固定空格为基础,因为行的长度不同。冒号是对象和变量之间的静态分隔符。

到目前为止,我可以这样做: awk'NR == 5'variables.txt | awk -F“:”'{print $ 2}' 它甚至会回显现有变量。但是我该如何将文本更改为“绿色”一词?

1 个答案:

答案 0 :(得分:2)

将awk的两个调用合并为一个:

awk -F: -v OFS=: 'NR==5 {$2 = "Green"} {print}' variables.txt

请注意,您需要同时设置 input output 字段分隔符:当您分配给字段($2 = ...)时,当前记录({ {1}})使用OFS变量进行重写。