2つのファイルを比較してください。

2つのファイルを比較してください。

file.txt2つのスクリプトがありますfile2.txt

ファイル1.txt

|col1|col2| 
|name|mandatory|
|age|mandatory| 
|address|mandatory|
|email|mandatory| 
|country|not-mandatory| 

ファイル2.txt

|col1|col2| 
|name|gabrielle| 
|age|| 
|address|nashville| 
|email|[email protected]| 
|country|| 

その列が強制されるfile1のすべての行を取得するには、一時ファイルを作成する必要があります。次に、file2に記載されている必須フィールドが空であることを確認する必要があります。

予想出力:

age mandatory

ベストアンサー1

以下を使用できますawk

awk -F '|' '
    NR==FNR && $3=="mandatory" {m[$2]++}
    NR>FNR && $3=="" && m[$2] {printf "%s mandatory\n", $2}
' file1.txt file2.txt

出力

age mandatory

説明する

awk両方のファイルの各行を繰り返します。レコード区切り文字が考慮されます|。これは、最初のフィールドが常に空であることを意味します。

file1.txtスクリプトの最初の行は、3番目のフィールド(これまでに読み取られたレコードの数は現在のファイルの行番号と一致します)がある行をNR探し、mandatory2番目のフィールドを配列に格納します。

スクリプトの 2 行目は行file2.txt(現在のファイルの行番号より読み取ったレコード数) を探し、3 番目のフィールドが空で、以前に作成したリストにある場合は、最初のフィールドの名前を印刷します。

おすすめ記事