/
각 줄 앞에 나타나는 특정 텍스트를 제거하려고 합니다 .
나는 다음과 같은 것을 가지고 있습니다 :
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"