行末で「-」で区切られた1つ以上のフィールドを削除します。

行末で「-」で区切られた1つ以上のフィールドを削除します。

データを分析したい。googleapis.txt

bucket,abc-def-ghi-45gjd4-wwxis
bucket,dde-wwq-ooi-66ciow-po22q
instance,jkl-mno-1-zzz-68dkakw-oo9w8
disk,pqr-stu-10-kuy-l2oxapw-rp4lt

以下の結果が出ると予想しています

bucket,abc-def-ghi
bucket,dde-wwq-ooi
instance,jkl-mno-1-zzz
disk,pqr-stu-10-kuy

-空白に変更してから、このコマンドを実行する必要があると思います。

cat googleapis.txt | awk '{$NF="";sub(/[ \t]+$/,"")}1' | awk '{$NF="";sub(/[ \t]+$/,"")}1'

私はこれからそれを得たhttps://stackoverflow.com/a/27794421/8162936解析後、スペースをハイフンに変更します-

解析のためのベストプラクティスや1行のシェルコマンドを知っている人はいますか?みんなありがとう

ベストアンサー1

一緒にsedできること:

sed -E 's/(-[^-]*){2}$//' infile

各行の終わりに-anything同じパターンを2回見つけて削除します。(...){2}$

おすすめ記事