[英]How to use awk/sed to replace data in a specific column in certain rows only
[英]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.