하나의 명령에는 두 개의 sed 명령이 포함됩니다.

하나의 명령에는 두 개의 sed 명령이 포함됩니다.

이름 등이 많은 파일이 있는데 이름 사이에 공백이 있습니다. 이제 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공백이 없고 공백이 아닌 줄만 인쇄하고 후행 공백은 모두 잘라냅니다.

관련 정보