Shell脚本-两个文件源文件和目标文件,Shell脚本需要执行以下任务

Shell脚本-两个文件源文件和目标文件,Shell脚本需要执行以下任务

我在编写shell脚本时有一个疑问,

例如我有两个文件

  1. file1.txt

    Name=myname
    Country=mycounty
    .
    .
    .
    

    大概有 100 行

  2. 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

相关内容