フォーマットが不適切なプレーンテキスト.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)