sed 패턴 일치 및 줄 삭제

sed 패턴 일치 및 줄 삭제

마지막에 있는 일부 공백(예: 4)을 삭제하고 싶습니다.line$#*425 with space

완료가 안되네요 추천해주세요

echo "line$#*425 with space          " | sed 's/ /\1 \2/g'

저도 사용해볼까 생각중인데 od -b아직 잘 모르겠네요

나는 무엇을 해야 합니까?

노트:공백은 일반 " " 또는 탭 문자일 수 있습니다.

편집하다: 아래 답변을 확인하기 위해 테스트를 해본 방법입니다.

[root@testgfs2 test]$echo -e "line$#*425 with space \t     "  | sed 's/[[:blank:]]\{4\}$//' | od -b
0000000 154 151 156 145 060 052 064 062 065 040 167 151 164 150 040 163
0000020 160 141 143 145 040 011 040 012
0000030

삭제는 공백 단어 뒤가 아니라 줄 끝에서 발생합니다. 탭(011) 아직 거기 있어요

답변1

귀하의 코드 예제가 귀하의 질문과 일치하지 않는 것 같습니다. 귀하의 코드 예제는 그룹화되어 있지 않으므로 아무 것도 인용 \1하지 마십시오 \2. 이것은 귀하가 요구하는 것과 같습니다.

sed 's/space[[:blank:]]\{4\}/space/' <<< "line$#*425 with space          "

답변2

유지하고 싶은 부분을 그룹으로 배치하세요. 정규식에서 인용해야 하는 문자( )를 인용하는 것을 잊지 마십시오 \[.*^$.

sed -e 's/\(line\$#\*425 with space\)[ \t][ \t][ \t][ \t]/\1/'

sed가 \t탭 표시를 지원하지 않는 경우 \t리터럴 탭으로 대체하십시오.

관련 정보