如何仅在特定行和特定列中使用 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
例如我有以下文件:
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