각 줄의 "/" 앞의 모든 항목을 삭제합니다.

각 줄의 "/" 앞의 모든 항목을 삭제합니다.

/각 줄 앞에 나타나는 특정 텍스트를 제거하려고 합니다 .

나는 다음과 같은 것을 가지고 있습니다 :

testing.db.com/7fad416d-f2b3-4259-b98d-2449957a3123
testing.db.com/8a8589bf-49e3-4cd7-af15-6753067355c6

나는 단지 다음을 얻고 싶습니다:

7fad416d-f2b3-4259-b98d-2449957a3123
8a8589bf-49e3-4cd7-af15-6753067355c6 

누구든지 정규 표현식을 도와줄 수 있나요? 내가 찾은 모든 항목이 삭제되고 있습니다.뒤쪽에 /, 아니요앞으로.

답변1

사용 cut:

$ cut -sd'/' -f2 file.txt   ##This will print only the lines containing /
7fad416d-f2b3-4259-b98d-2449957a3123
8a8589bf-49e3-4cd7-af15-6753067355c6

다음 제안 /에서는 연속해서 한 번만 발생한다고 가정합니다.

사용 grep:

$ grep -o '[^/]*$' file.txt  ##This will print the lines not having / too
7fad416d-f2b3-4259-b98d-2449957a3123
8a8589bf-49e3-4cd7-af15-6753067355c6

/모든 행에 있는 경우 다음을 사용할 수도 있습니다.

bash매개변수 확장 사용 :

$ while read line; do echo "${line#*/}"; done <file.txt 
7fad416d-f2b3-4259-b98d-2449957a3123
8a8589bf-49e3-4cd7-af15-6753067355c6

또는 python:

#!/usr/bin/env python2
with open('file.txt') as f:
    for line in f:
        print line.split('/')[1].rstrip()

귀하의 예와 관련하여 위의 제안은 모두 유효합니다.

답변2

sed를 사용하면 충분히 간단합니다.

echo "testing.db.com/7fad416d-f2b3-4259-b98d-2449957a3123" | sed -e "s/.*\///"

기본 구문은 "s/search/replace/"입니다. 여기서는 .*\/슬래시(이스케이프)로 끝나는 모든 항목을 검색한 다음 이를 다른 항목으로 바꿉니다.

답변3

펄 사용:

< file.txt perl -pe 's/.*\///'

답변4

sed를 사용하는 두 가지 방법:

sed -i "s|testing.db.com/||g" file_path_here

또는

echo "testing.db.com/7fad416d-f2b3-4259-b98d-2449957a3123" | sed -e "s|testing.db.com/||g"

관련 정보