【问题标题】:Grep key-value pairs from a badly formatted plaintext file从格式错误的纯文本文件中提取键值对
【发布时间】:2013-06-29 22:36:19
【问题描述】:

我正在编写一个 shell 脚本,它需要从 badly 中检索键值对 格式化的纯文本.txt 文件。 .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)

【问题讨论】:

    标签: shell awk sed grep cygwin


    【解决方案1】:
    awk '/User First Name/ {print $2}' RS=')' FS='('
    

    输出:

    Goofball
    

    【讨论】:

      猜你喜欢
      • 2023-03-17
      • 1970-01-01
      • 2011-10-09
      • 2021-05-09
      • 1970-01-01
      • 2015-11-05
      • 1970-01-01
      • 1970-01-01
      • 2019-11-27
      相关资源
      最近更新 更多