私の出力diff
形式は次のとおりです。
$ curr_dt=$(date +%m_%d_%Y)
$ echo $curr_dt
$ diff -q /POC/$curr_dt/DDL/ /POC/Backup/DDL/
Only in /POC/Backup/DDL/: comp1.txt
Only in /POC/Backup/DDL/: comp.txt
Only in /POC/Backup/DDL/: junk.txt
Files /POC/$curr_dt/DDL/test.demo_table1.txt and /POC/Backup/DDL/test.demo_table1.txt differ
Only in /POC/$curr_dt/DDL/: test.demo_table2.txt
ここで、上記のデータから次の情報を取得したいと思います。
- /POC/Backup/DDL/ のみ:
- /POC/$curr_dt/DDL/ のみ:
- ファイル*相違
たとえば、
diff -q /POC/05_26_2022/DDL/ /POC/Backup/DDL/ | grep -i '^Files.*.differ$'
Files /POC/05_26_2022/DDL/test.demo_table1.txt and /POC/Backup/DDL/test.demo_table1.txt differ
上記のように完全なデータ行を取得します。 test.demo_table1.txtをインポートしてファイルに保存します。同様に
i am not able to grep with variable $curr_dt in the file
答え1
$curr_dt
上記のコードスニペットで変数が設定/拡張されていないようです。少なくとも出力echo
には表示されず、表示されません。 (xtrace)オプションセットをdiff
使用して-x
コードを実行します。他に質問がある場合は、以下を試してください。
awk '/^Only/ {gsub("[/:]+", "_", $3); print $NF > $3} /^Files.*differ/ {sub(/^.*\//, "", $2); print $2 > "different"}' file
それぞれのファイル名を持つ3つのファイルを作成する必要があります。
OPの繰り返し要求に応じて、ファイル名が認識/認識されたディレクトリに縮小されました。
awk '
/Only/ {m = split($3, T, "[/:]+")
print $NF > T[m-2]
}
/Files.*differ/ {sub(/^.*\//, "", $2)
print $2 > "different"
}
' file