我有2个文件1.txt和2.txt
1.txt包含以下详细信息
user = 10
user2 = 20
user3 = 30
2.txt包含以下详细信息
user = 25MB
user2 = 30MB
我需要比较两个文件,如果字符串在文件中匹配它应该附加第一个文件中的数据,如果它不匹配则应该在shell脚本中附加0
期望的输出
user = 10 25MB
user2 = 20 30MB
user3 = 30 0MB
我正在使用命令:
awk 'FNR==NR{a[$1$2];next}!($1$2 in a)' 1.txt 2.txt
但没有获得所需的输出。我是shell脚本的新手,正在寻找完整的实现帮助。
你能帮我解释一下语法和实现吗?
答案 0 :(得分:1)
您可以使用以下内容:
libopus
我选择以相反的顺序阅读文件$ awk 'NR == FNR { a[$1] = $3; next }
{ printf "%s = %s %s\n", $1, $3, ($1 in a ? a[$1] : "0MB") }' 2.txt 1.txt
user = 10 25MB
user2 = 20 30MB
user3 = 30 0MB
,然后2.txt
。 1.txt
中的键和值存储在数组2.txt
中。对于a
中的每一行,如果存在,则使用与该键对应的数组中的值。