AWKまたはCUTを使用して各行の最後の単語を削除する方法

AWKまたはCUTを使用して各行の最後の単語を削除する方法
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で始まり抽出され、逆の順序で抽出されますが、両方の行が同じ操作をよりきれいに実行できるため、/作業が多すぎるようです。sedawk

$ 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

関連情報