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