텍스트 파일에 하위 도메인이 없는 도메인 목록이 있습니다. TLD와 SLD를 제거해야 합니다.
입력하다
google.uk
example.com
amazon.co.uk
domain.ca.uk
education.edu.it
예상 출력:
google
example
amazon
domain
education
답변1
이를 위해 awk 또는 sed가 필요하지 않습니다. 이것이 cut
존재합니다.
$ cut -d'.' -f1 file
google
example
amazon
domain
education
답변2
나는 내 질문에 대한 답을 찾았습니다. 매우 간단하다는 것이 밝혀졌습니다
awk -F. '{print $1}' input_file
나는 사용한다'. '-F'를 구분 기호로 사용합니다. 이렇게 SLD와 TLD를 $2 및/또는 $3 열에 넣었습니다.
"{print $1}"을 사용하면 첫 번째 열의 텍스트만 인쇄하며 이것이 필요한 출력입니다.
답변3
sed "s/\..*//" filename
google
example
amazon
domain
education
\.
첫 번째 텍스트 지점과 그 이후의 모든 항목 과 일치합니다 .*
. 아무것도 대체 되지 않으므로 s
첫 번째 지점부터 시작하는 모든 항목이 삭제됩니다.
답변4
사용행복하다(이전 Perl_6)
~$ raku -ne 'put .split(".")[0];' input_file
awk
아마도 Raku 솔루션이 도움이 될 것입니다. 위의 내용은 Raku(및 Perl)가 0 인덱스라는 점을 제외하면 코드를 상당히 유사하게 번역한 것입니다 . Raku의 -ne
"비자동 인쇄 라인" 명령줄 플래그를 사용하십시오(더 sed
유사한 동작을 위해서는 Raku의 -pe
명령줄 플래그를 사용하십시오).
Raku는 Perl보다 적은 수의 명령줄 스위치를 제공하므로 언어로 더 많은 작업을 수행할 수 있습니다(코드 이식성 향상). 이는 결과 문자열에서 이를 split
파괴적으로 제거하는 데 사용되는 필드 구분 기호를 정의합니다. .
그런 다음 [0]
인덱스가 0인 첫 번째 요소는 put
( put
끝에 개행 문자를 추가하는 "print-using-terminator"의 약자)입니다.
입력 예:
google.uk
example.com
amazon.co.uk
domain.ca.uk
education.edu.it
예제 출력:
google
example
amazon
domain
education