Korn 쉘의 for 루프와 while 루프 중 어느 것이 더 낫습니까?

Korn 쉘의 for 루프와 while 루프 중 어느 것이 더 낫습니까?

처리할 파일 이름 목록이 포함된 file_list.txt 파일이 있습니다. file_list.txt에 있는 모든 파일에 대해 후행 공백과 추가 줄 바꿈을 제거해야 합니다. 어떻게 해야 하나요? while 루프나 for 루프를 사용하는 것이 더 낫습니까?

답변1

편집에 관한 것이라면 file_list.txt,쉘 루프가 아닌 텍스트 편집 도구를 사용합니다., 좋다:

sed 's/[[:space:]]*$//; # remove trailing whitespace
     /./!d; # remove empty lines' < file_list.txt > new_file_list.txt

또는 그 자리에서 편집하세요.

perl -nli.back -e 's/\s+$//;print if /./' file_list.txt

( .back원본 백업본이 필요하지 않으면 삭제하세요.)

파일 목록이 있고 각 파일에 대해 편집 명령을 실제로 실행하려는 경우가 아니면 해당 파일의 내용을 편집하려는 경우에도 file_list.txt반복은 이상적이지 않습니다 .

내용이 file_list.txt입력 형식과 호환되는 경우 xargs, 즉 파일 이름이 공백(줄 바꿈 포함)으로 구분되고 큰따옴표, 작은따옴표 또는 백슬래시가 공백과 서로를 이스케이프할 수 있는 경우(모든 문자 허용) 다음을 수행할 수 있습니다.

xargs < file_list.txt perl -nli.back -e 's/\s+$//;print if /./' --

관련 정보