![sed 또는 Perl을 사용하여 파일에서 한 줄만 왼쪽으로 정렬하는 방법](https://linux55.com/image/177009/sed%20%EB%98%90%EB%8A%94%20Perl%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%ED%8C%8C%EC%9D%BC%EC%97%90%EC%84%9C%20%ED%95%9C%20%EC%A4%84%EB%A7%8C%20%EC%99%BC%EC%AA%BD%EC%9C%BC%EB%A1%9C%20%EC%A0%95%EB%A0%AC%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
이렇게 하면 각 줄 시작 부분의 모든 공백과 탭이 제거됩니다.
sed 's/^[ \t]*//' file
queued.max.requests=1000
하지만 파일의 매개변수 만 정렬하고 싶다고 가정해 보겠습니다.
- 입력 예:
log.flush.interval.messages=20000 queued.max.requests = 1000 producer.purgatory.purge.interval.requests=100
- 원하는 출력:
log.flush.interval.messages=20000 queued.max.requests=1000 producer.purgatory.purge.interval.requests=100
sed 's/^[ \t]*//'
우리는 이 상황 에 어떻게 적응합니까 ? 또한 sed/perl에서 " =
"에 대한 매개변수 사이와 프로시저의 값에 대한 " " 사이의 =
공백을 제거하고 싶습니다 .
답변1
어때요?
sed '/queued\.max\.requests/s/[\t ]\{1,\}//g' file
또는
sed -r '/queued\.max\.requests/s/[\t ]+//g' file
=
이렇게 하면 포함된 줄의 모든 공백(줄의 시작 부분과 주변 공백부터)만 제거됩니다 queued.max.requests
.
답변2
$ sed 's/^[[:space:]]*\(queued\.max\.requests\)/\1/; s/ *= */=/' file
log.flush.interval.messages=20000
queued.max.requests=1000
producer.purgatory.purge.interval.requests=100