2

フォーマットが不適切なプレーンテキスト.txtファイルからキーと値のペアを取得する必要があるシェル スクリプトを作成しています。は.txt、プレーンテキストとして保存された MS Word ドキュメントです。以下のサンプルからわかるよう Sample_Profile.txtに、キーの後には開き括弧と閉じ括弧で区切られた値が続きます。

ユーザー名

(マイペース)

ユーザーの姓

(グーフバーグ) メールアドレス

(goofball@example.com)

パスワード (sogoofedrightnow)

1.プロフィール詳細

プロフィール名* (グーフボールのプロフィール) プロフィールID**
(Guid2763944-a234)

唯一の問題は、キーをその値に一致させるときに空白と空行を無視することです。要約すると、私がやりたいことは、キー (例: "User First Name" または "Profile Name") とgrep対応する値のみを指定し、最後に my にパイプして、sed必要な値を取得することです。

これは、「User First Name」の値を取得するためのスクリプトです。

FIRST_NAME=$(grep "User First Name" Sample_Profile.txt | sed 's|[^(]*(\([^)]*\)).*|\1|') 
#grep User First Name key and pipe to sed to get the value bewteen parentheses
sed -i -e 's/USER_FIRST_NAME/'"$FIRST_NAME"'/g' UserName.txt 
echo $FIRST_NAME 
# outputs "User First Name" when it should get "Goofball" (grep is not
# piping correctly due to white space)
4

1 に答える 1