【问题标题】:How to awk only in a certain row and specific column如何仅在特定行和特定列中进行 awk
【发布时间】:2020-06-30 19:53:59
【问题描述】:

例如我有以下文件:

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

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

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

我当前的代码是:

getID=$1
getName=$2

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

非常感谢您的帮助,提前感谢您。

【问题讨论】:

  • 提示如果你想了解你做错了什么:只运行awk -v varName="AA" -F':' '$2=varName' file.dat否则,请使用下面的答案。

标签: bash shell awk sh


【解决方案1】:

你可以使用这个 awk:

getID=14          # change to getID="$1"
getName='John K'  # change to getName="$2"

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 2014-03-27
    • 1970-01-01
    • 1970-01-01
    • 2015-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多