답변:
".com"뒤에 오는 모든 것을 명시 적으로 삭제하려면 기존 sed 솔루션을 조정하여 ".com (anything)"을 ".com"으로 바꾸십시오.
sed 's/\.com.*/.com/' file.txt
나는 첫 번째 기간을 피하기 위해 정규 표현식을 조정했습니다. 그렇지 않으면 "thisiscommon.com/something"과 일치했을 것입니다.
"sub.com.domain.com/foo"와 같은 것을 실수로 자르지 않도록 슬래시 (/)를 사용하여 ".com"패턴을 추가로 고정 할 수 있습니다.
sed 's/\.com\/.*/.com/' file.txt
다음과 같은 방식으로 awk
필드 구분 기호 ( -F
)를 사용할 수 있습니다 .
$ cat file
google.com/funny
unix.stackexchange.com/questions
isuckatunix.com/ireallydo
$ cat file | awk -F '\\.com' '{print $1".com"}'
google.com
unix.stackexchange.com
isuckatunix.com
설명:
NAME
awk - pattern scanning and processing language
-F fs
--field-separator fs
Use fs for the input field separator (the value of the FS predefined variable).
당신이 후 모든 일을 삭제할으로 .com
, -F '.com'
와 라인을 분리 .com
하고 print $1
출력을 이전 부분 만 제공합니다 .com
. 따라서 예상 출력을 $1".com"
추가 .com
하고 제공합니다.
acomercial.com/asdsad
비 대화식 내부 파일 편집을위한 최상의 도구는 ex
입니다.
ex -sc '%s/\(\.com\).*/\1/ | x' file.txt
사용 vi
하고 콜론으로 시작하는 명령을 입력 한 :
경우 ex 명령을 사용했습니다. 물론이 방법으로 실행할 수있는보다 고급 또는 "팬시"명령은 Vim 확장 (예 :) :bufdo
이며 POSIX 사양에ex
정의되어 있지 않지만 이러한 사양을 통해 비 시각적 수준의 놀라운 성능과 유연성을 얻을 수 있습니다. 텍스트 편집 (대화식 또는 자동).
위의 명령에는 여러 부분이 있습니다.
-s
자동 모드가 ex
배치 사용 을 준비 할 수 있도록 합니다. (억제 출력 메시지 등)
-c
파일 ( file.txt
이 경우)이 버퍼에서 열리면 실행할 명령을 지정합니다 .
%
1,$
- 와 동등한 주소 지정자 입니다. 다음 명령이 버퍼의 모든 행에 적용됨을 의미합니다.
s
이미 익숙한 대체 명령입니다. 고급 정규식 기능 중 일부는 구현에 따라 달라질 수 있지만 vi
이 s
명령sed
은 일반적으로 사용되며 의 명령 과 본질적으로 동일한 기능을 갖습니다 . 이 경우 ".com"에서 줄 끝까지는 ".com"으로 바뀝니다.
수직 막대는 실행될 순차적 명령을 분리합니다. 많은 (대부분의) ex
구현에서 다음 -c
과 같은 추가 옵션을 사용할 수도 있습니다 .
ex -sc '%s/\(\.com\).*/\1/' -c x file.txt
그러나 이것은 POSIX에 필요하지 않습니다.
x
명령이 종료, 파일에 변경 사항을 작성 후. wq
"쓰기 및 종료"를 의미하는 것과 달리 x
버퍼가 편집 된 경우에만 파일에 씁니다. 따라서 파일이 변경되지 않으면 타임 스탬프가 유지됩니다.
sed
의 가짜 -i 보다 더 크지 않습니다. 온 디스크 버퍼를 읽거나 씁니다. 자신 ex -r
과 preserve
명령을 참조하십시오 .
preserve
명령이 무엇입니까 ?
매우 빠르고 간단하고 더러운 파이썬 방법 :
#!/usr/bin/env python
import sys
with open( sys.argv[1] ) as file:
for line in file:
print line.split("/")[0]
샘플 런
skolodya@ubuntu:$ chmod +x removeStrings.py
skolodya@ubuntu:$ ./removeStrings.py strings.txt
google.com
unix.stackexchange.com
isuckatunix.com
skolodya@ubuntu:$ cat strings.txt
google.com/funny
unix.stackexchange.com/questions
isuckatunix.com/ireallydo
.com
됩니다. 첫 번째 /
줄 부터 시작하여 모든 것을 제거합니다 . (제 생각에는 더 나은 접근 방식입니다!)
.net
다른 접근 방식에서는 domain 및 extension 뒤에 오는 부분이 삭제되지 않으므로 /
구분 기호 로 사용하는 것이 더 안전합니다 .
.com
첫 번째/
문자 다음을 포함하여 모든 문자 를 제거하는 대신 검색하려는 특정 이유가 있습니까?en.wikipedia.org/wiki/Ubuntu
목록에 URL이 있으면 어떻게해야 합니까?