我正在尝试为每个用户组装一个软件安装列表。我在file1.txt中有完整的用户列表,以及在file2.txt中安装了该软件的用户列表。我想最终只有file1.txt或file1.txt和file2.txt中的行,但包括空行。所以:
FILE1.TXT
bhope
bsmith
fjones
jdoe
zdirks
FILE2.TXT
bhope
jdoe
zdirks
我可以通过comm -2 file1.txt file2.txt
进入中途,这让我:
<tab>bhope
bsmith
fjones
<tab>jdoe
<tab>zdirks
我希望输出为:
bhope
<blank line>
<blank line>
jdoe
zdirks
用“Y”替换实际输出线的奖励积分:
Y
<blank line>
<blank line>
Y
Y
但找不到使用cut
或awk
保留空白行的方法。
答案 0 :(得分:1)
这个单行应该给你想要的东西:
awk 'NR==FNR{a[$0];next}{if($0 in a)print $0;else print ""}' file2 file1
见下面的例子:
kent$ head file1 file2
==> file1 <==
bsmith
bhope
fjones
jdoe
zdirks
==> file2 <==
bhope
jdoe
zdirks
kent$ awk 'NR==FNR{a[$0];next}{if($0 in a)print $0;else print ""}' file2 file1
bhope
jdoe
zdirks
和....我不明白你的
奖励积分
一部分。什么是Y
s?
答案 1 :(得分:1)
假设您已修复已排序的问题:
comm -2 file1.txt file2.txt | awk -F'\t' '{print (NF==2?"y":"")}'
y
y
y