2

.txt我正在编写一个 shell 脚本,它需要从格式错误的纯文本文件中检索键值对。.txts 是已保存为纯文本的 MS Word 文档。正如您从下面的示例中看到的那样 Sample_Profile.txt,键后面是由左括号和右括号分隔的值。

用户名

(傻瓜)

用户姓氏

(Goofberg) 电子邮件地址

(goofball@example.com)

密码(sogoofedrightnow)

1. 简介详情

个人资料名称*(Goofball 的个人资料)个人资料 ID**
(Guid2763944-a234)

唯一的问题似乎是在将键与其值匹配时忽略空格和空行。总之,我想做的是指定键(例如“用户名”或“配置文件名”)和grep相应的值,最后通过管道传递给我sed,这样我就得到了我需要的值。

这是我编写的脚本,用于获取“用户名”的值。

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

4
awk '/User First Name/ {print $2}' RS=')' FS='('

输出:

Goofball
于 2013-06-29T22:46:55.190 回答