ACRBAMIDKC124,/Program Files (x86)/BigFix Enterprise/BES Client/__GTS/jre/bin/java.exe
ACRBAMIDKC124,/Program Files/Java/jre6/bin/java.exe
ACRBAMIDKC125,/Program Files/Tivoli/TSM/baclient/jvm80535/jre/bin/java.exe
그리고 우리가 원하는 예상 결과
ACRBAMIDKC124,/Program Files (x86)/BigFix Enterprise/BES Client/__GTS/jre/bin
ACRBAMIDKC124,/Program Files/Java/jre6/bin
ACRBAMIDKC125,/Program Files/Tivoli/TSM/baclient/jvm80535/jre/bin
답변1
$ sed 's,/[^/]*$,,' file
ACRBAMIDKC124,/Program Files (x86)/BigFix Enterprise/BES Client/__GTS/jre/bin
ACRBAMIDKC124,/Program Files/Java/jre6/bin
ACRBAMIDKC125,/Program Files/Tivoli/TSM/baclient/jvm80535/jre/bin
이렇게 하면 각 줄의 마지막 문자 뒤의 모든 내용이 sed
제거됩니다 ./
정규식은 /[^/]*$
줄 끝 슬래시 뒤에 슬래시가 아닌 문자가 오는 것과 일치하며 교체는 이러한 문자를 제거합니다(아무 것도 대체하지 않음).
같은 것 awk
:
awk '{ sub("/[^/]*$", ""); print }' file
cut
잘라낼 고정 구분 기호가 없기 때문에 여기서 유틸리티를 사용하기가 어색합니다 . 당신은 분명히 할 수 있습니다취소각 행은 rev
로 시작하여 추출된 다음 다시 역순으로 추출되지만 두 행 모두 동일한 작업을 더 깔끔하게 수행 할 수 있으므로 /
작업이 너무 많은 것 같습니다 .sed
awk
$ rev file | cut -d '/' -f 2- | rev
ACRBAMIDKC124,/Program Files (x86)/BigFix Enterprise/BES Client/__GTS/jre/bin
ACRBAMIDKC124,/Program Files/Java/jre6/bin
ACRBAMIDKC125,/Program Files/Tivoli/TSM/baclient/jvm80535/jre/bin
답변2
다음 방법을 시도해 볼 수 있습니다.
awk -F\/ 'BEGIN {OFS="/"} {$NF=""} 1' input_file
또는 후행 슬래시를 피하기 위해 이것을 사용할 수 있습니다(GNU에서는 작동 awk
하지만 다른 버전에서는 작동하지 않을 수 있습니다).
awk -F\/ 'BEGIN {OFS="/"} {NF-=1} 1' input_file
답변3
주문하다
awk -F "/" 'OFS="/"{$NF="";print $0}' filename| sed "s/\/$//g"
산출
ACRBAMIDKC124,/Program Files (x86)/BigFix Enterprise/BES Client/__GTS/jre/bin
ACRBAMIDKC124,/Program Files/Java/jre6/bin
ACRBAMIDKC125,/Program Files/Tivoli/TSM/baclient/jvm80535/jre/bin
답변4
Python 메소드를 사용하여 완료됨
#!/usr/bin/python
import re
y=re.compile(r'/[a-z]*\.[a-z]*$')
k=open('i.txt','r')
for i in k:
print re.sub(y,"",i).strip()
산출
ACRBAMIDKC124,/Program Files (x86)/BigFix Enterprise/BES Client/__GTS/jre/bin
ACRBAMIDKC124,/Program Files/Java/jre6/bin
ACRBAMIDKC125,/Program Files/Tivoli/TSM/baclient/jvm80535/jre/bin