현재 저는 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
귀하의 예에서는 필요하지 않은 마지막 부분을 제거했습니다 .
관련된: