방금 한 일을 겪었어sed 튜토리얼기사. 누군가 이 명령을 설명하도록 도와줄 수 있습니까? (마침표 뒤에 문자가 대문자로 변경됩니다.)
sed -E 's/(^[a]|\. [a-z])/\U&\E/g' filename.txt
답변1
당신이 링크한 튜토리얼은 매우 피상적입니다.
sed를 진지하게 사용하고 싶다면 추천합니다http://www.grymoire.com/Unix/Sed.html 대신에.
sed의 명령은 s
a from pattern
, a to string
및 선택적으로 some 을 사용합니다 flags
. 전통적으로 문자로 구분되지만 /
어떤 구두점이라도 사용할 수 있습니다. 이는 from 또는 to 매개변수에 / 문자가 포함된 경우에 적합합니다.
따라서 이 경우 플래그는 g
, from 패턴은 (^[a]|\. [a-z])
, to 문자열은 입니다.\U&\E
이 시점에서는 from 패턴을 이해하는 방법을 알아야 합니다. 이 ()
문자는 패턴의 다양한 부분을 결합하는 데 사용됩니다. 이는 |
작업이므로 or
or 와 this|that
일치합니다 . 줄의 시작 부분 과 일치 하고 문자와 일치하므로 줄 시작 부분의 문자와 일치합니다 . the는 문자 와 일치하고 , 공백은 공백과 일치하며, 그리고 는 및 사이의 문자와 일치합니다 (이들은 모두 소문자이고 다른 문자는 아니길 바랍니다). 그것들을 함께 사용하면 마침표(마침표), 공백, 및 사이의 문자가 일치하는 항목을 얻게 됩니다 .this
that
^
[a]
a
^[a]
a
\.
.
[a-z]
a
z
\. [a-z]
a
z
to 문자열은 \U&\E
다음과 같이 디코딩됩니다. the는 &
from 패턴과 일치하는 문자입니다. \U
다음 내용을 대문자로 변환하여 \E
변환 종료를 나타냅니다 . \U 및 \E는 sed의 gnu 확장입니다. POSIX 입니다sed
이러한 g
플래그는 일치 항목을 가능한 한 많이 교체하여 반복해야 함을 나타냅니다.
따라서 튜토리얼에서 복사한 코드는 다음으로 변환됩니다.누구나소문자 a 또는 "마침표 공백 lower_case_letter"에서 대문자로 시작하는 시퀀스입니다.