sed를 basename의 인수로 사용

sed를 basename의 인수로 사용

지금까지 나는이 코드를 가지고 있습니다 ...

for i in {1..200}; do sed '$i,0!d' md5list.txt | grep -a ": "; done 

basename위 코드의 각 반복을 다음과 같이 실행하고 싶습니다 .

basename $(for i in {1..200}; do sed '$i,0!d' md5list.txt | grep -a ": "; done)

어떻게 해야 하나요? 비슷한 질문을 찾을 수 있는 키워드는 무엇인가요?

답변1

출력을 xargs또는 으로 파이프할 수 있습니다 while.

for i in ...; done | xargs -n 1 basename

또는

for i in ...; done | while read filename; do basename $filename; done

둘 다 거의 동일합니다. Xargs는 더 빠르지만 유연성이 떨어집니다. 매뉴얼 페이지 xargs(1)나 의 매뉴얼 페이지를 읽을 수 있습니다 bash.

그건 그렇고, 당신의 sed진술은 아마도 당신이 원하는 어떤 일도 하지 못할 것입니다. 변수 ( '$i'대신 "$i")를 참조하고 있으므로 sed는 이를 "마지막 줄에 새 줄 삽입",0!d"로 해석합니다. 한 줄만 가져오려면 매 줄마다 인쇄하지 않는 sed -n "${i}p" md5list.txt기본값을 사용해야 할 것입니다. -n라인, 그리고 p인쇄 버퍼.

관련 정보