정규식과 일치하는 명령줄 명령에 공백을 추가합니다.

정규식과 일치하는 명령줄 명령에 공백을 추가합니다.

텍스트 파일에서 발견된 정규식 패턴이 나타날 때마다 공백을 추가하고 싶습니다.

예:

xadsfa 1 - 2 --- --- --- AB
jklhwj 3 --- --- --- asdfh
weriulceh 2 - 4 --- --- --- asdf

"1 -2" 또는 "2 - 4"를 일치시키고 싶습니다. 나는 다음과 같은 패턴을 생각해 냈습니다.

[0-9]\s-\s[0-9]

이제 다음과 같이 각 일치 항목에 공백을 추가하고 싶습니다.

xadsfa 1 - 2  --- --- --- AB
jklhwj 3 --- --- --- asdfh
weriulceh 2 - 4  --- --- --- asdf

답변1

다음과 같은 도구를 사용하면 쉽습니다 sed.

$ sed 's/[0-9]\s-\s[0-9]/& /' file
xadsfa 1 - 2  --- --- --- AB
jklhwj 3 --- --- --- asdfh
weriulceh 2 - 4  --- --- --- asdf

이 연산자는 입력 파일의 각 줄에서 s/foo/bar/처음 나타나는 부분을 대체합니다 foo. bar맞추고 싶다면모두행이 주어지면 g: 을 사용하십시오 s/foo/bar/g. 이는 &"일치하는 콘텐츠"이므로 s/[0-9]\s-\s[0-9]/& /처음 나타나는 정규식은 일치하는 콘텐츠에 공백을 더한 내용으로 대체됩니다.

탭이나 다른 공백이 아닌 단일 공백만 일치시키는 경우에는 공백을 사용할 이유가 없습니다 \s.

sed 's/[0-9] - [0-9]/& /' file

마지막으로, 파일 자체를 변경하려면 다음을 사용하십시오. -i(이것은 GNU 를 가정하고 sed구문은 다른 구현에서 약간 다릅니다. 또한 파일을 sed 작업의 결과로 대체합니다. 추가하기 전에 필요한 작업을 수행하는지 확인하십시오 -i. ) :

sed -i 's/[0-9] - [0-9]/& /' file

관련 정보