이름 등이 많은 파일이 있는데 이름 사이에 공백이 있습니다. 이제 sed를 사용하여 이 파일의 모든 후행 공백과 모든 빈 줄을 제거하고 싶습니다.
이 작업을 수행하는 두 가지 명령이 있지만 두 명령을 조합하여 사용하고 싶습니다.
sed -i's/\s*$//g'
sed -i'/^$/d'
답변1
GNU sed
(및 아마도 다른 것)를 사용하면 세미콜론으로 구분된 여러 명령을 제공할 수 있습니다.
sed -i 's/\s*$//g; /^$/d'
다른 sed
구현에서는 다음을 사용하여 두 명령을 별도로 제공해야 할 수도 있습니다 -e
.
sed -i -e 's/\s*$//g' -e '/^$/d'
마지막으로 이를 스크립트로 결합할 수도 있습니다 sed
.
$ cat foo.sed
s/\s*$//g
/^$/d
그런 다음 다음을 사용하여 실행할 수 있습니다 -f
.
$ sed -i -f foo.sed file
답변2
찾고 있는 명령은 다음과 같습니다.
sed -ne '/[^ ]/s/ *$//p' <in >out
...공백이 아닌 문자 1개 이상과 일치하는 줄의 경우 sed
줄 끝에서 0개 이상의 후행 공백으로 구성될 수 있는 가장 긴 일치 항목이 대체됩니다. 성공하면(그리고 항상 그럴 것입니다. 아무것도 부족하지 않을 것이기 때문입니다), 라인이 p
인쇄됩니다.
결과적으로 명령은 p
공백이 없고 공백이 아닌 줄만 인쇄하고 후행 공백은 모두 잘라냅니다.