입력하다
[*] 111, 22, 33, 44
산출
111,22,33,44
sed
명령을 사용하면 sed 's/^\[\*\][[:space:]]*//' file
출력이 표시될 수 있습니다. 111, 22, 33, 44
이는 공간이 아직 남아 있음을 의미합니다.
그렇다면 올바른 명령은 무엇입니까 sed
?
답변1
짧은 대답은 이것이 원하는 것을 수행해야 한다는 것입니다.
sed 's/[][*]\|[[:space:]]//g'
다음과 같이 테스트해 보세요.
echo '[*] 111, 22, 33, 44' | sed 's/[][*]\|[[:space:]]//g'
산출:
111,22,33,44
더 자세한 설명은 다음과 같습니다.
표현에서 누락된 핵심 요소는 다음을 사용하는 것입니다.g
명령전역 교체를 수행합니다. 이 명령이 없으면 각 줄의 첫 번째 항목만 대체됩니다.
내 솔루션 중 가장 직관에 반하는 부분은(내 의견으로는) 문자 클래스에 대괄호를 포함하는 방법입니다. 이를 위해 우리는 다음을 참조합니다.sed 매뉴얼:
‘]’ ends the bracket expression if it’s not the first list item. So, if you want to make the ‘]’ character a list item, you must put it first.
이 주제에 대한 자세한 내용은 SeverFault의 다음 게시물을 참조하세요.
또는 표현식을 다른 sed
명령에 전달할 수 있습니다. 예를 들면 다음과 같습니다.
echo '[*] 111, 22, 33, 44' \
| sed 's/^\[\*\]//' \
| sed 's/[[:space:]]//g'