1

ユーザーごとのソフトウェア インストールのリストを作成しようとしています。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

4

2 に答える 2

1

ソートされた問題を修正したと仮定します。

comm -2 file1.txt file2.txt | awk -F'\t' '{print (NF==2?"y":"")}'
y


y
y
于 2013-05-13T23:26:00.793 に答える
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ですか?

于 2013-05-13T23:00:07.720 に答える