sed 설명: sed '/./,$!d' 파일

sed 설명: sed '/./,$!d' 파일

누군가 파일 상단의 모든 선행 빈 줄을 제거하는 이 코드를 설명해 주시겠습니까?

sed '/./,$!d' file

나는 그것이 첫 번째 문자와만 일치하는 정규식이라는 것을 알고 있지만 ,$!d 부분을 이해하지 못합니다. 이것이 대체되는 것입니까, 아니면 게임에 대한 옵션입니까?

"s/"로 시작하지 않으면... 그래도 검색 명령인가요?

코드 소스(다른 질문에서)

답변1

sed '/./,$!d'

문자(공백 또는 공백이 아닌)를 포함하는 첫 번째 줄부터 파일 끝까지 - 부정(파일의 시작부터 문자를 포함하는 첫 번째 줄 앞의 줄까지를 의미) - 삭제합니다.

이렇게 하면 선행 항목이 제거됩니다.비어 있는빈 줄이 아닌 줄. 선행 빈 줄(빈 줄 또는 공백 문자만 포함하는 줄)을 제거하려면 이라고 말합니다 '/\S/,$!d'.

"Sed, 소개 및 튜토리얼"을 읽어보세요:http://www.grymoire.com/Unix/Sed.html. 그런 다음 참조 매뉴얼을 읽으십시오.https://www.gnu.org/software/sed/manual/sed.html.

간단히 말해서:

  • 명령의 일반적인 형식은 sed[selector][negation]command[flag]입니다(대괄호는 선택적 부분을 나타냄).

  • 선택기가 있는 경우 명령이 적용되는 행을 선택합니다.

  • 존재하는 경우 !선택기를 무효화합니다. 즉, 선택기와 일치하지 않는 행에 명령이 적용됩니다.

  • 선택기가 없으면 명령이 모든 행에 적용됩니다.

  • 선택기는 행(숫자 기준) 또는 행 그룹(정규 표현식 기준)을 선택하거나 시작 행(숫자 또는 정규 표현식 기준)과 끝 행(숫자 또는 정규 표현식 기준) 사이의 행을 선택할 수 있습니다.

  • 우리의 경우 선택자는 다음을 /./,$의미합니다 .~에서일치하는 첫 번째 줄을 찾습니다 /./(예: 문자가 하나 이상 포함되어 있음)도착하다파일 끝( $파일의 마지막 줄을 나타내는 줄 번호로 사용됨).

  • 이는 무효화되므로 !명령은 파일의 시작 부분부터 첫 번째 줄이 일치하기 전의 줄까지 적용됩니다 /./.

  • 이 명령은 d선택한 줄을 삭제합니다.

관련 정보