Unixで特定の文字列のファイルを検索し、そのファイルから別の文字列セットを検索し、ファイル属性を印刷します。

Unixで特定の文字列のファイルを検索し、そのファイルから別の文字列セットを検索し、ファイル属性を印刷します。

私はUnixの特定のディレクトリから始めて*.sas その文字列を含み、終わるファイルを検索するコマンドを使用していますDB2。次に、結果ファイルセットから文字列を検索するか、DSN=これらDATASRC=の文字列を含む行を印刷したいと思います。これは私が使用するFINDコマンドです。

find '/shrproj/'  -type f -name '*.sas'  -exec  grep   -il 'DB2'  {} \;  2> /dev/null  |  xargs   egrep   -Ri  'DSN=|DATASRC='

これにより、目的の結果が得られます。

/shrproj/files/stp_code/aea_aat_stp/icrv3/bin/macro/cnct_2_eaw.sas:                   ,"DSN=%UPCASE(&the_database.)"
/shrproj/files/stp_code/aea_aat_stp/icrv3/bin/macro/cnct_2_eaw.sas:                   ,"DSN=%UPCASE(&the_database.)"

ただし、上記の結果に従って(-lsオプションを使用して)ファイルのプロパティを印刷したいと思います。つまり、以下は私が達成したいものです。

/shrproj/files/stp_code/aea_aat_stp/icrv3/bin/macro/cnct_2_eaw.sas:                   ,"DSN=%UPCASE(&the_database.)"
/shrproj/files/stp_code/aea_aat_stp/icrv3/bin/macro/cnct_2_eaw.sas:                   ,"DSN=%UPCASE(&the_database.)"
61522   19 -rwxrwsr-x  1 sas       sas          18546 Jun  2  2010 /shrproj/files/stp_code/aea_aat_stp/icrv3/bin/macro/cnct_2_eaw.sas

上記の最後の行のファイル属性は、-lsオプションでfindコマンドを使用した場合と同じです。

 find /shrproj/files/stp_code/aea_aat_stp/icrv3/bin/macro/cnct_2_eaw.sas -ls

それでは、上記で最初に使用した検索コマンドを使用して各ファイルに対してこれをどのように達成しますか?

教えてください。ありがとうございます。

ベストアンサー1

のみ:

find '/shrproj/'  -type f -name '*.sas' \
    -exec  grep -iq 'DB2'  {} \; \
    -exec  grep -ie  DSN= -e DATASRC= {} \; \
    -ls

おすすめ記事