Прикрепление файла в 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 

Свойства файла в последней строке выше одинаковы при использовании команды find с параметром -ls.

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

Итак, как мне добиться этого для каждого файла, используя самую первую команду Find, которую я использую выше?.

Пожалуйста, дайте мне знать. Благодарю.

2 Solutions collect form web for “Прикрепление файла в Unix для данной строки, а затем другой набор строк в этом файле и печать свойств файла тоже”

Просто:

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

Я бы предложил что-то по этому поводу (не могу делать все в одном лайнере) 😉

 OLDIFS="$IFS" IFS=$'\n' for i in $(find '/shrproj/' -type f -name '*.sas'); do G1="$(grep -il 'DB2' "$i")" if [ -n "$G1" ]; then G2="$(egrep -Ri 'DSN=|DATASRC=' "$i")" if [ -n "$G2" ]; then echo "$G1" echo "$G2" ls -l "$i" fi fi done IFS="$OLDIFS" 
  • Предоставление параметров scp с помощью xargs
  • Трубопровод нескольких строк в сценарии bash
  • Каков синтаксис для передачи вывода команды в xargs?
  • Как заставить «xargs» игнорировать выход ребенка и продолжить обработку
  • копирование подкаталогов, не содержащих определенный файл, в другой каталог
  • Как удалить команды в истории, соответствующие заданной строке?
  • Xargs с несколькими записями аргументов - используйте аргумент переменной окружения после sh -c '...'
  • цикл через выход одной команды и использовать в другой команде
  • Исправлен последний аргумент с xargs
  • Формат вывода xargs
  • Правильный синтаксис для использования awk в сочетании с другой командой внутри xargs sh -c
  • Linux и Unix - лучшая ОС в мире.