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 /./' --

관련 정보