ファイルからパターン grep を検索

ファイルからパターン grep を検索

私の出力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

ここで、上記のデータから次の情報を取得したいと思います。

  1. /POC/Backup/DDL/ のみ:
  2. /POC/$curr_dt/DDL/ のみ:
  3. ファイル*相違

たとえば、

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

おすすめ記事