텍스트 파일의 단어를 명령에 삽입

텍스트 파일의 단어를 명령에 삽입

한 줄에 한 단어씩 100개가 넘는 단어 목록이 포함된 텍스트 파일이 있습니다.

Oliver.txt
Jack.txt
Noah.txt
Leo.txt
William.txt

텍스트 파일 콘텐츠를 다음으로 변환하고 싶습니다.

gallery-dl -g -i Oliver.txt > OliverX.txt
gallery-dl -g -i Jack.txt > JackX.txt

모든 단어에 대해서도 마찬가지입니다. 어떻게 해야 하나요?

답변1

GNU awk에서:

awk -i inplace -v FS="." '{print "gallery-dl -g -i " $1 ".txt > " $1 "X.txt"}' FILE

그것이 무엇을 대체할 것인가문서새로운 콘텐츠로. -i inplace새 내용을 stdout으로 인쇄하고 원본 내용을 갖고 싶다면 제거하십시오.문서손대지 않은.

답변2

perl또는 에서 거의 동일한 구문을 사용하여 이 작업을 쉽게 수행할 수 있습니다 sed.

sed:

$ sed -E 's/(.*).txt/gallery-dl -g -i \1.txt > \1X.txt/' file
gallery-dl -g -i Oliver.txt > OliverX.txt
gallery-dl -g -i Jack.txt > JackX.txt
gallery-dl -g -i Noah.txt > NoahX.txt
gallery-dl -g -i Leo.txt > LeoX.txt
gallery-dl -g -i William.txt > WilliamX.txt

perl:

$ perl -pe 's/(.*).txt/gallery-dl -g -i \1.txt > \1X.txt/' file
gallery-dl -g -i Oliver.txt > OliverX.txt
gallery-dl -g -i Jack.txt > JackX.txt
gallery-dl -g -i Noah.txt > NoahX.txt
gallery-dl -g -i Leo.txt > LeoX.txt
gallery-dl -g -i William.txt > WilliamX.txt

답변3

사용행복하다(이전 Perl_6)

raku -pe 's/ ^ (.+) \.txt $ /gallery-dl -g -i $0.txt > $0X.txt/;' 

@terdon의 Perl(5) 코드와 마찬가지로 Raku의 캡처는 $0Perl(5)에서가 아니라 1에서 시작합니다. 위 코드에서는 (.+)확장자 앞에 문자가 하나 이상 필요합니다 \.txt. alnumRaku 대체 연산자의 왼쪽 절반에 있는 모든 비문자는 s///리터럴로 이해되도록 이스케이프되어야 합니다(예 \.txt: ). 마지막으로 Raku 대체 연산자의 왼쪽 절반은 s///기본적으로 공백을 허용합니다.

입력 예:

Oliver.txt
Jack.txt
Noah.txt
Leo.txt
William.txt

예제 출력:

gallery-dl -g -i Oliver.txt > OliverX.txt
gallery-dl -g -i Jack.txt > JackX.txt
gallery-dl -g -i Noah.txt > NoahX.txt
gallery-dl -g -i Leo.txt > LeoX.txt
gallery-dl -g -i William.txt > WilliamX.txt

https://raku.org

관련 정보