Sed 정규 표현식: -E와 BRE의 차이점(Sed & Awk 101 해킹)

Sed 정규 표현식: -E와 BRE의 차이점(Sed & Awk 101 해킹)

현재 저는 awk와 sed를 스스로 가르치고 있습니다. 나는 온라인 책 Sed & Awk 101 hacks를 찾았고 지금까지는 매우 좋다고 생각합니다. 그럼에도 불구하고 "그룹화"라는 개념을 이해할 수 없기 때문에 며칠 동안 계속하지 않은 것을 발견했습니다. 이것이 입력 파일입니다.

cat employee.txt
101,John Doe,CEO
102,Jason Smith,IT Manager
103,Raj Reddy,Sysadmin
104,Anand Ram,Developer
105,Jane Miller,Sales Manager

이 책의 sed 명령은 다음과 같습니다.

sed 's/\([^,]*\).*/\1/g' employee.txt

이 명령의 출력은 다음과 같습니다.

101
102
103
104
105

명령을 이해하려고 노력하고 있지만 이해가 되지 않습니다. 그런 다음 sed 문서(man sed)를 확인한 후 -E 플래그를 사용하지 않으면 정규 표현식이 BRE 구문을 채택한다는 사실을 발견했습니다. 이 표현식이 동일한 입력을 얻지 못하는 이유를 알려주실 수 있나요?

sed -E 's/^(\d+),.+/\1/g' employee.txt

미리 감사드립니다!

답변1

\d에서는 작동하지 않습니다. 대신 sed사용할 수 있습니다 .[[:digit:]][0-9]

sed -E 's/^([[:digit:]]+),.+/\1/' employee.txt
sed -E 's/^([0-9]+),.+/\1/' employee.txt

g귀하의 예에서는 필요하지 않은 마지막 부분을 제거했습니다 .

관련된:

관련 정보