누군가 나에게 다음 파이프라인을 설명해 줄 수 있나요?
고유한 포트 이름만 나열되도록 서비스의 포트 목록을 필터링하려고 합니다. do expand
와 do 는 정확히 무엇이며 tr
, with 를 사용하는 정규식의 용도는 무엇입니까 egrep
?
expand regexAufgabe | egrep -v '^#|^$' | tr -s ' ' | cut -d ' ' -f2 | cut -d / -f2 | sort | uniq
답변1
이 expand
유틸리티는 파일의 탭 문자를 공백으로 변환합니다(예: "탭을 공백으로 확장"). 파이프라인은 먼저 이름이 지정된 파일의 콘텐츠에 대해 이 작업을 수행합니다 regexAufgabe
. 바라보다 man expand
.
그런 다음 유틸리티 egrep
는 -v
옵션 및 정규식과 함께 사용됩니다 ^#|^$
. 이 -v
옵션은 테스트의 요점을 무효화합니다. 즉, egrep
이를 수행하는 모든 라인이 출력됩니다.아니요주어진 정규식과 일치합니다. 정규 표현식은 #
문자로 시작하거나 비어 있는 행과 일치합니다. 이는 파이프라인의 두 번째 단계에서 로 시작하는 빈 줄을 제거한다는 의미입니다 #
.
이 tr
유틸리티는 일반적으로 한 문자 세트를 다른 문자 세트로 변환하는 데 사용되지만 파이프는 이를 사용하여 여러 연속 공백을 단일 공백으로 "압축"합니다. 바라보다 man tr
.
cut
/
그런 다음 결과 데이터세트에서 공백으로 구분된 두 번째 필드를 추출한 다음, 여기에서 공백으로 구분된 두 번째 필드를 추출하는 데 사용됩니다 .
파이프라인의 마지막 두 단계는 sort | uniq
단일 명령으로 작성할 수 있습니다 sort -u
. 이렇게 하면 데이터가 정렬되고 중복 항목이 제거됩니다.
즉, 탭을 (단일) 공백으로 바꾸고(여러 공백을 하나로 압축하고) 빈 줄을 제거하고 주석 처리된 줄을 만드는 파이프가 있습니다. 그런 다음 각 행의 두 번째 공백으로 구분된 필드에서 고유한 두 번째 공백으로 구분된 필드를 선택합니다 /
.