シェルスクリプトを書くときに質問があります。
たとえば、2つのファイルがあります
file1.txt
Name=myname Country=mycounty . . .
約100行ほどあります。
file2.txt
Name=othername Country=anothercountry Occupation=my_occupation . . .
私の問題は、2つのファイルがあるということです。file1.txt
1つはターゲットファイル、もう1つfile2.txt
はソースファイルです。ターゲットファイルの入力をターゲットファイルで見つけて置き換える必要があります。一致しない場合は追加してください。
sed
2〜3行を編集するには、を使用できます。 20行を編集したいとしましょう。それは非常に難しいです。
この問題を解決するのに役立ちます
答え1
awk
値が含まれていないとし、これを使用します。=
awk -F'=' '
{ h[$1]=$2 } # Save the key/value
END { for (k in h) { printf "%s=%s\n", k, h[k] } } # Output all key/value pairs
' file2.txt file1.txt
しかし、あなたは使用することができますsort
sort -t'=' -u -k1,1 file2.txt file1.txt # Sort by first field discarding duplicates
出力(どちらか一方)
Country=mycounty
Name=myname
Occupation=my_occupation