如何仅在特定行和特定列中使用 awk

How to awk only in a certain row and specific column

例如我有以下文件:

4:Oscar:Ferk:Florida
14:Steven:Pain:Texas
7:Maya:Ross:California

等等... 它的行数未知,因为您可以继续向其中添加更多内容。 我正在编写一个脚本,您可以在其中通过输入人员 ID 和您要为其提供的新名称作为参数来编辑名称。

我想做的是使用 awk 查找该行,然后更改该特定行的名称并更新文件。我遇到了麻烦,因为我的代码将每个列值都更新为给定值。

我当前的代码是:

getID=
getName=

awk -v varID="$getID" -F':' '[=11=]~varID' file.dat | awk -v varName="$getName" -F':' '=varName' file.dat > tmp && mv tmp file.dat

非常感谢您的帮助,在此先感谢您。

你可以使用这个 awk:

getID=14          # change to getID=""
getName='John K'  # change to getName=""

awk -v id="$getID" -v name="$getName" 'BEGIN{FS=OFS=":"} ==id{=name} 1' file

4:Oscar:Ferk:Florida
14:John K:Pain:Texas
7:Maya:Ross:California