>  Q&A  >  본문

linux - while read와 sed의 혼합 사용과 관련하여 sed는 표준 입력의 첫 번째 줄을 먹습니다.

다음 내용이 포함된 crashcourse_test.txt 파일이 있습니다.

으아악

while_read.sh 스크립트의 내용은 다음과 같습니다. 위의 파일 내용을 표준 입력으로 사용하여 while read 루프에 전달하고 각 줄의 "USA" 문자열을 "XXXXXXXXX"로 바꾸는 것이 목적입니다. sed 명령:

으아악

출력 결과는 다음과 같습니다.

으아악

라인 1001에는 교체 요구 사항을 충족하는 문자열 "USA"(파일의 첫 번째 라인)가 포함되어 있지만 결과적으로 이 라인은 출력되지 않습니다.
저는 echo $line | sed 's/USA/XXXXXXXXX/'를 사용하여 얻을 수 있는 올바르게 출력하는 방법을 알고 있습니다.
근데 출력의 첫 줄만 누락된 이유를 알고 싶습니다. 표준 입력으로 읽는 동안 입력한 후 첫 번째 줄은 어디로 가나요?

習慣沉默習慣沉默2687일 전1062

모든 응답(1)나는 대답할 것이다

  • 淡淡烟草味

    淡淡烟草味2017-06-10 09:50:43

    우선 sed의 사용법이 잘못되었을 수 있습니다.

    sed [옵션]... {script-only-if-no-other-script} [입력 파일]...

    해당 매개변수는 파일이며, 귀하의 변수 line는 사용되지 않습니다. 으아아아

    3만 출력하면

    루프가 1회만 실행됩니다. 따라서 파일 리디렉션 < crashcourse_test.txt가 실제로 read 및 입력, < crashcourse_test.txt实际上被作为read的输入和sed的输入,并且sedreadread 이후의 모든 항목을 입력으로 사용하므로 입력의 첫 번째 줄을 사용하지 않았습니다.

    회신하다
    0
  • 취소회신하다