我在编写shell脚本时有一个疑问,
例如我有两个文件
file1.txt
Name=myname Country=mycounty . . .
大概有 100 行
file2.txt
Name=othername Country=anothercountry Occupation=my_occupation . . .
我的问题是我有两个文件,file1.txt
一个是目标文件,一个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