grep은 sed 출력을 개행으로 구분된 목록으로 처리하지 않습니다.

grep은 sed 출력을 개행으로 구분된 목록으로 처리하지 않습니다.

오늘 놀면서 출력을 소비하기 위해 grep을 얻으려고했습니다 ...

$(apt-cache rdepends hunspell-fr | sed -e 's/^\s*|\?//' -e 1s/^/\'/g -e \$s/$/\'/)

...작은따옴표 안에 중첩된 패턴의 줄바꿈으로 구분된 목록입니다. 위 명령을 실행한 다음 결과 출력을 새 grep 명령에 복사/붙여넣으면 예상대로 작동합니다...

nohatsatthetable@debian:~$ dpkg -l | grep 'hunspell-fr
Reverse Depends:
hunspell-fr-classical
thunderbird-l10n-fr
firefox-esr-l10n-fr
thunderbird-l10n-fr
task-french-desktop
hunspell-fr-revised
hunspell-fr-revised
hunspell-fr-comprehensive
hunspell-fr-comprehensive
hunspell-fr-classical
firefox-esr-l10n-fr'

ii  firefox-esr-l10n-fr                    102.4.0esr-1~deb11u1             all          French language package for Firefox ESR
ii  hunspell-fr                            1:7.0-1                          all          French dictionary for hunspell (dependency package)
ii  hunspell-fr-classical                  1:7.0-1                          all          French dictionary for hunspell (classical version)
ii  task-french-desktop                    3.68+deb11u1                     all          French desktop

그러나 다음 한 줄의 코드(내 생각에는 기능적으로 동일해야 함)를 실행하면 grep은 첫 번째 줄만 패턴으로 해석하고 모든 후속 줄(또는 두 번째 줄의 경우 단어) 디렉토리 또는 패턴을 검색할 파일...

nohatsatthetable@debian:~$ dpkg -l | grep $(apt-cache rdepends hunspell-fr | sed -e 's/^\s*|\?//' -e 1s/^/\'/g -e \$s/$/\'/)
grep: Reverse: No such file or directory
grep: Depends:: No such file or directory
grep: hunspell-fr-classical: No such file or directory
grep: thunderbird-l10n-fr: No such file or directory
grep: firefox-esr-l10n-fr: No such file or directory
grep: thunderbird-l10n-fr: No such file or directory
grep: task-french-desktop: No such file or directory
grep: hunspell-fr-revised: No such file or directory
grep: hunspell-fr-revised: No such file or directory
grep: hunspell-fr-comprehensive: No such file or directory
grep: hunspell-fr-comprehensive: No such file or directory
grep: hunspell-fr-classical: No such file or directory
grep: firefox-esr-l10n-fr': No such file or directory

왜 이런가요?

답변1

예, @언급한 대로선행은 이루기가 어렵다 , 따옴표는 필수입니다.

$ dpkg -l |
    grep "$(apt-cache rdepends hunspell-fr |
        sed -e 's/^\s*|\?//' -e 1s/^/\'/g -e \$s/$/\'/
 )"                   

관련 정보