sed를 사용하여 줄의 시작 부분 삭제

sed를 사용하여 줄의 시작 부분 삭제

name.txt다음 문자열로 호출된 파일에 나열했습니다.

Los Angeles, CA us1.vpn.goldenfrog.com
Washington, DC  us2.vpn.goldenfrog.com
Austin, TX  us3.vpn.goldenfrog.com
Miami, FL   us4.vpn.goldenfrog.com
New York City, NY   us5.vpn.goldenfrog.com
Chicago, IL us6.vpn.goldenfrog.com
San Francisco, CA   us7.vpn.goldenfrog.com
Amsterdam   eu1.vpn.goldenfrog.com
Copenhagen  dk1.vpn.goldenfrog.com
Stockholm   se1.vpn.goldenfrog.com
Hong Kong   hk1.vpn.goldenfrog.com
London  uk1.vpn.goldenfrog.com

*.vpn.goldenfrog.com이제 sed를 사용하여 이전 내용 ( 3자) 을 모두 삭제하고 싶습니다 *.

내가 원하는 출력:

hk1.vpn.goldenfrog.com
dk1.vpn.goldenfrog.com
etc ...

답변1

필요하지 않은 경우 sed다음 awk프로세스를 통해 삭제할 수 있습니다.

awk '{print $NF}' filename

답변2

해결책 을 원한다면 sed:

sed 's/.*[[:blank:]]\([^[:blank:]]*\)$/\1/' file.txt

캡처된 그룹( \1)에는 대체에 사용되는 마지막 공백 뒤의 줄 부분이 포함됩니다.

예:

% sed 's/.*[[:blank:]]\([^[:blank:]]*\)$/\1/' file.txt  
us1.vpn.goldenfrog.com
us2.vpn.goldenfrog.com
us3.vpn.goldenfrog.com
us4.vpn.goldenfrog.com
us5.vpn.goldenfrog.com
us6.vpn.goldenfrog.com
us7.vpn.goldenfrog.com
eu1.vpn.goldenfrog.com
dk1.vpn.goldenfrog.com
se1.vpn.goldenfrog.com
hk1.vpn.goldenfrog.com
uk1.vpn.goldenfrog.com

grep이 작업도 쉽게 수행할 수 있습니다.

% grep -o '[^[:blank:]]*$' file.txt                   
us1.vpn.goldenfrog.com
us2.vpn.goldenfrog.com
us3.vpn.goldenfrog.com
us4.vpn.goldenfrog.com
us5.vpn.goldenfrog.com
us6.vpn.goldenfrog.com
us7.vpn.goldenfrog.com
eu1.vpn.goldenfrog.com
dk1.vpn.goldenfrog.com
se1.vpn.goldenfrog.com
hk1.vpn.goldenfrog.com
uk1.vpn.goldenfrog.com

답변3

파일이 공백으로 구분되어 있다고 가정하면 마지막 공백 문자까지 각 줄의 내용을 간단히 제거할 수 있습니다.

$ sed 's/.* //' file
us1.vpn.goldenfrog.com
us2.vpn.goldenfrog.com
us3.vpn.goldenfrog.com
us4.vpn.goldenfrog.com
us5.vpn.goldenfrog.com
us6.vpn.goldenfrog.com
us7.vpn.goldenfrog.com
eu1.vpn.goldenfrog.com
dk1.vpn.goldenfrog.com
se1.vpn.goldenfrog.com
hk1.vpn.goldenfrog.com
uk1.vpn.goldenfrog.com

파일이 탭 문자를 구분 기호로 사용하는 경우 [[:blank:]]표현식에 텍스트 대신 공백 문자를 사용할 수 있습니다. 이것은 탭과 일치합니다또는공백 문자:

sed 's/.*[[:blank:]]//' file

cut먼저 각 행을 반전시킨 다음 첫 번째 필드를 제거한 결과를 반전시켜 탭으로 구분된 마지막 필드를 얻을 수도 있습니다.

rev file | cut -f 1 | rev

데이터에 정확히 두 개의 탭으로 구분된 필드가 있고 그 중 두 번째 필드를 원하는 경우 훨씬 더 간단합니다.

cut -f 2 file

관련 정보