sed는 마침표 뒤의 문자를 대문자로 바꿉니다.

sed는 마침표 뒤의 문자를 대문자로 바꿉니다.

방금 한 일을 겪었어sed 튜토리얼기사. 누군가 이 명령을 설명하도록 도와줄 수 있습니까? (마침표 뒤에 문자가 대문자로 변경됩니다.)

sed -E 's/(^[a]|\. [a-z])/\U&\E/g' filename.txt

답변1

당신이 링크한 튜토리얼은 매우 피상적입니다.

sed를 진지하게 사용하고 싶다면 추천합니다http://www.grymoire.com/Unix/Sed.html 대신에.

sed의 명령은 sa from pattern, a to string및 선택적으로 some 을 사용합니다 flags. 전통적으로 문자로 구분되지만 /어떤 구두점이라도 사용할 수 있습니다. 이는 from 또는 to 매개변수에 / 문자가 포함된 경우에 적합합니다.

따라서 이 경우 플래그는 g, from 패턴은 (^[a]|\. [a-z]), to 문자열은 입니다.\U&\E

이 시점에서는 from 패턴을 이해하는 방법을 알아야 합니다. 이 ()문자는 패턴의 다양한 부분을 결합하는 데 사용됩니다. 이는 |작업이므로 oror 와 this|that일치합니다 . 줄의 시작 부분 과 일치 하고 문자와 일치하므로 줄 시작 부분의 문자와 일치합니다 . the는 문자 와 일치하고 , 공백은 공백과 일치하며, 그리고 는 및 사이의 문자와 일치합니다 (이들은 모두 소문자이고 다른 문자는 아니길 바랍니다). 그것들을 함께 사용하면 마침표(마침표), 공백, 및 사이의 문자가 일치하는 항목을 얻게 됩니다 .thisthat^[a]a^[a]a\..[a-z]az\. [a-z]az

to 문자열은 \U&\E다음과 같이 디코딩됩니다. the는 &from 패턴과 일치하는 문자입니다. \U다음 내용을 대문자로 변환하여 \E변환 종료를 나타냅니다 . \U 및 \E는 sed의 gnu 확장입니다. POSIX 입니다sed

이러한 g플래그는 일치 항목을 가능한 한 많이 교체하여 반복해야 함을 나타냅니다.

따라서 튜토리얼에서 복사한 코드는 다음으로 변환됩니다.누구나소문자 a 또는 "마침표 공백 lower_case_letter"에서 대문자로 시작하는 시퀀스입니다.

관련 정보