한 줄에서 첫 번째 슬래시 "/" 이전의 모든 내용을 출력합니다.

한 줄에서 첫 번째 슬래시 "/" 이전의 모든 내용을 출력합니다.

나는 일련의 URL을 가지고 있으며 첫 번째 URL 이전의 항목에만 관심이 있습니다 /.

이 정보를 텍스트 파일로 캡처하려면 어떻게 해야 합니까?

입력 ( foo.txt):

apple.com/nothing.js  
t1.msn.com/cookie=22  
happy.net/whatever

출력(파일로 리디렉션됨: ) foo_filter.txt:

apple.com/  
t1.msn.com/  
happy.net/  

답변1

$ awk 'sub("/.*","/")' foo.txt
apple.com/
t1.msn.com/
happy.net/

답변2

사용 Miller:

mlr --nidx --ifs '/' -N cut -f 1 file

또는 GNU를 사용하십시오 datamash:

datamash dirname 1 <file

답변3

후행 슬래시가 필요하지 않으면 매우 간단합니다.

cut -d/ -f1 foo.txt
awk -F/ '{print $1}' foo.txt
sed 's!/.*!!' foo.txt

정말로 후행 슬래시를 원한다면,

awk -F/ '{print $1 "/"}' foo.txt
sed 's!/.*!/!' foo.txt

이 모든 것이 기록될 것이다표준 출력(화면) 결과를 즉시 확인할 수 있습니다. 대상 파일로 리디렉션하려면 >foo_filter.txt명령 끝에 사용하십시오. 예를 들어,

awk -F/ '{print $1 "/"}' foo.txt >foo_filter.txt

답변4

을 텐데:

$ grep -oE '^[^/]+/' foo.txt

산출:

apple.com/
t1.msn.com/
happy.net/

모든 요구 사항을 충족하려면:

grep -oE '^[^/]+/' foo.txt | tee foo_filter.txt

관련 정보