![확장자가 다른 다중 입력 및 다중 출력 명령](https://linux55.com/image/213529/%ED%99%95%EC%9E%A5%EC%9E%90%EA%B0%80%20%EB%8B%A4%EB%A5%B8%20%EB%8B%A4%EC%A4%91%20%EC%9E%85%EB%A0%A5%20%EB%B0%8F%20%EB%8B%A4%EC%A4%91%20%EC%B6%9C%EB%A0%A5%20%EB%AA%85%EB%A0%B9.png)
나는 Linux 시스템에서 일부 작업을 수행하기 위해 grep, sed 및 cut 명령을 사용하고 있습니다.
zgrep -A1 "^module" *.v.gz | sed -n -e 's/^\(module \)*\(.*(.*)\).*$/\2/p' | cut -f1 -d"("
이것은 .v.gz 파일 확장자를 가진 파일에서 실행되며 출력 파일의 확장자가 .txt이기를 원합니다.
예를 들어 다음과 같은 파일 이름을 입력합니다.
abcd.v.gz
efgh.v.gz
ijkl.v.gz
mnop.v.gz
출력 파일 이름
abcd.txt
efgh.txt
ijkl.txt
mnop.txt
그래서 동일한 파일 이름 접두사를 유지하고 확장자를 변경하고 싶습니다. 파일 수에 관계없이 어떻게 이 작업을 수행할 수 있습니까?
나는 쉘 프리미티브를 찾고 있지 않습니다
답변1
루프를 사용하여 for
각 파일 처리
for f in *.v.gz
do
zgrep -A1 "^module" "$f" |
sed -n -e 's/^\(module \)*\(.*(.*)\).*$/\2/p' |
cut -f1 -d"(" > "${f%.v.gz}.txt"
done
sed 프로그램에 관해 약간의 질문이 있습니다.
sed -n -e 's/^module *\([^(]*\).*$/\1/p'
그러면 전혀자를 필요가 없습니다.