awk - "somestring:" 前の値を抽出します。

awk -

以下を使用して、リアルタイムで接続されたドライブのUUIDを取得するスクリプトを作成しています。

udiskctl monitor

以下はいくつかの標準出力ラインです。

HintPartitionable:          true
HintSymbolicIconName:       
HintSystem:                 false
Id:                         by-uuid-EXTERNALLABEL
IdLabel:                    
IdType:                     vfat
IdUUID:                     EXTERNALLABEL
IdUsage:                    filesystem
IdVersion:                  FAT32

だから古い文字列を取得したいと思います。idUUID:

予想出力:

EXTERNALLABEL

誰でもどんなアイデアがありますか?提案してください。

ベストアンサー1

これは一般的な質問であり、これを行う方法にはすでに答えがありますが、awk次の方法を使用できます。

udiskctl monitor | awk '{if (match($0,"^[[:space:]]*IdUUID:[[:space:]]*([[:print:]]+)",a)) print a[1]}'

または@Archemarの提案によると、短いです。

udiskctl monitor | awk '/^[[:space:]]*IdUUID:/ {print $2}'

またはより強力になるには、@ Ed Mortonの提案に従ってください。

udiskctl monitor | awk '$1=="IdUUID:"{print $2}'

またはもちろん、あまりにも古いですsed

udiskctl monitor | sed -e 's/^[[:space:]]*IdUUID:[[:space:]]*//;t;d'

おすすめ記事