다음 내용이 포함된 crashcourse_test.txt 파일이 있습니다.
으아악while_read.sh 스크립트의 내용은 다음과 같습니다. 위의 파일 내용을 표준 입력으로 사용하여 while read 루프에 전달하고 각 줄의 "USA" 문자열을 "XXXXXXXXX"로 바꾸는 것이 목적입니다. sed 명령:
으아악출력 결과는 다음과 같습니다.
으아악라인 1001에는 교체 요구 사항을 충족하는 문자열 "USA"(파일의 첫 번째 라인)가 포함되어 있지만 결과적으로 이 라인은 출력되지 않습니다.
저는 echo $line | sed 's/USA/XXXXXXXXX/'
를 사용하여 얻을 수 있는 올바르게 출력하는 방법을 알고 있습니다.
근데 출력의 첫 줄만 누락된 이유를 알고 싶습니다. 표준 입력으로 읽는 동안 입력한 후 첫 번째 줄은 어디로 가나요?
우선
sed
의 사용법이 잘못되었을 수 있습니다.해당 매개변수는 파일이며, 귀하의 변수
3만 출력하면line
는 사용되지 않습니다. 으아아아루프가 1회만 실행됩니다. 따라서 파일 리디렉션
< crashcourse_test.txt
가 실제로read
의 입력으로 사용됩니다. > 및 입력,< crashcourse_test.txt
实际上被作为read
的输入和sed
的输入,并且sed
将read
read
이후의 모든 항목을 입력으로 사용하므로 입력의 첫 번째 줄을 사용하지 않았습니다.