簡體   English   中英

如何僅在特定行和特定列中使用 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=$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:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM