지금까지 나는이 코드를 가지고 있습니다 ...
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
인쇄 버퍼.