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