'sed'의 정의

'sed'의 정의

모든 줄이 다음으로 시작하는 helo.lst라는 거대한 텍스트 파일이 있습니다.

#=GS N4TFW2_FUSC1/96-161      AC N4TFW21

N4TFW2_FUSC1나는 이 부분 에만 관심이 있다 . 나머지 텍스트에서 이 부분을 추출하여 전체 텍스트 파일에 적용해야 합니다.

작동하는 다음 스크립트를 찾았지만 방법을 모르겠습니다.

cat helo.lst | sed 's/^#=GS\s\([A-Z0-9_]*\)\/.*/\1/1' > helo_id.lst

그 후에 무슨 일이 일어났는지 설명해줄 수 있는 사람 있나요?s/

예를 들어, 내가 아는 한 파일에서 with가 sed 's/Mark/Euro/g' de_currency.txt나타나는 모든 항목을 변경합니다. Mark하지만 내 예에서는 스크립트가 그보다 더 복잡해 보입니다.Eurode_currency.txt

답변1

sed 구문에 따르면:

/원래/교체/1회


원본을 분해하다

^ 줄의 시작

#=검색할 GS 문자열

\s 공간

( ) \는 쉘에서 사용되는 것처럼 (에서 의미를 갖습니다. ()는 대체 부분에서 대체될 변수를 나타냅니다(그룹화).

[A-Z0-9_] []는 A~Z, 0~9, _ 등의 문자를 나타냅니다.

*는 0회 이상을 의미합니다.

\/ \는 쉘에서 의미를 얻기 때문에 "/"로 끝나는 문자열을 나타냅니다.

.* 줄이 끝날 때까지 다른 모든 것을 소비/일치합니다.


분해 대체

\1 원래 문자열의 첫 번째 문자열 정규식 일치(변수)(역참조 [그룹])


경고: 이것은 GNU sed 구문입니다. OS/X 또는 *BSD에서는 gsed를 사용해야 합니다.

고급 예제가 포함된 sed 기사 링크:

http://www.thegeekstuff.com/2009/10/unix-sed-tutorial-advanced-sed-substitution-examples/

관련 정보