표준 입력에서 파일 이름이 지정된 파일의 내용을 인쇄하는 명령

표준 입력에서 파일 이름이 지정된 파일의 내용을 인쇄하는 명령

실제로 전체 출력 데이터가 포함된 파일 이름인 일부 출력 부분을 생성하는 명령이 있습니다. 일반적으로 사용하는 파일 이름을 추출한 cut다음 다른 프로그램에 전달하고 싶습니다 . 예를 들어 cat파일 내용이 표시됩니다.

실행 중인 실제 명령을 공유할 수는 없지만 재현성을 위해 다음 ./my-command args으로 대체할 수 있습니다.echo 1:2:3:4:file.txt

그래서 다음을 시도했습니다.

./my-command args | cut -d : -f 5 | cat

cat그러나 이는 인수 없이 호출할 때 stdin(내 파일 이름 포함)의 내용을 stdout에 복사하기 때문에 파일 이름만 인쇄합니다 .

cat이제 명령 흐름을 거꾸로 하고 서브셸을 통해 인수를 전달하여 Bash 문제를 해결할 수 있다는 것을 알았습니다 .

cat `./my-command args | cut -d : -f 5`

이렇게 하면 파일의 내용이 인쇄되지만 호출에 간단한 명령을 추가하여 기본 명령의 출력을 간단히 파이프할 수 없기 때문에 특히 사용자 친화적이지는 않습니다.

cat표준 입력에서 파일 이름을 가져와 내용을 인쇄하는 유사한 프로그램이 있습니까 ? 아니면 catstdin을 매개변수로 처리하는 방법이 있나요 ?

노트

나는 stdin에서 파일 이름을 읽고 cat내 환경에서 호출하는 bash 함수를 정의할 수 있다는 것을 깨달았습니다. 그러나 출력 데이터를 직접 덤프하는 이 기술은 최종 사용자 문서에 포함되어야 하며 간단한 쉘 독립적 접근 방식이 매우 선호됩니다.

답변1

더 많은 조사를 한 후에 나는 이것이 정확히 사실이라는 것을 깨달았습니다.xargs을 위해 설계:

./my-command args | cut -d : -f 5 | xargs cat

이는 stdin의 출력을 cat실제 파일 이름에 대한 호출로 변환하여 파일 내용을 인쇄합니다.

관련 정보