Misalnya saya punya file berikut:

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

Dan seterusnya... Ini memiliki jumlah baris yang tidak diketahui karena Anda dapat terus menambahkan lebih banyak. Saya sedang menulis skrip di mana Anda dapat mengedit nama dengan memberikan id orang tersebut dan nama baru yang ingin Anda berikan sebagai parameter.

Apa yang saya coba lakukan adalah menggunakan awk untuk menemukan baris dan kemudian mengubah nama pada baris tertentu dan memperbarui file. Saya mengalami masalah karena kode saya memperbarui setiap nilai kolom ke nilai yang diberikan.

Kode saya saat ini adalah:

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

Bantuan sangat dihargai, terima kasih sebelumnya.

1
Nick Thenick 19 Maret 2020, 19:28

1 menjawab

Jawaban Terbaik

Anda dapat menggunakan awk ini:

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
3
anubhava 19 Maret 2020, 16:40