【问题标题】:Remove quotes with SED使用 SED 删除引号
【发布时间】:2011-05-14 00:43:43
【问题描述】:

我正在使用以下命令在 Twitter 上跟踪一些关键字。我只想打印推文作者的“screen_name”属性。我可以让下面的命令正常工作,但想从作者 screen_name 中删除“引号”。我怎么能这样做?

curl -N -d @tracking http://stream.twitter.com/1/statuses/filter.json \
     -umyuser:mypass | \
sed -e 's/[{}]/''/g' | \
awk -v RS=',"' -F: '/^screen_name/ {print $2}'

【问题讨论】:

  • 为什么这里有多余的单引号? sed -e 's/[{}]/''/g'不应该只是sed -e 's/[{}]//g'吗? curl 命令的输出在到达 sedawk 之前是什么样子的。包含sedawk 的管道通常可以简化为不包含sed 的管道。

标签: unix shell


【解决方案1】:
cat a.txt | tr -d "\042"

更好,因为它也适用于 Windows(使用 gnuwin32)

【讨论】:

    【解决方案2】:

    聚会有点晚了,这个实用程序听起来对解析 json twitter 返回很有用:http://stedolan.github.io/jq/

    【讨论】:

      【解决方案3】:

      为什么要使用 sed?

      | tr -d '"'
      

      适合工作的正确工具。

      【讨论】:

      • 我的脚本需要兼容 solaris :-) 所以我需要一个 sed,因为 tr 在 solaris 上不是很好
      • 只要您使用/usr/xpg6/bin/tr 而不是/usr/bin/tr,在solaris 上tr 并没有什么大问题。
      • 我理解你的沮丧。我建议将PATH 设置为/usr/xpg6/bin:/usr/xpg4/bin:/usr/bin:/bin;这应该在 Solaris 和 Linux 上使用最好的 Unix 工具版本,而不需要任何自定义的 find-the-binary 代码。
      • 而且,如果你想过滤掉/删除一个单引号,这里是:| tr -d "'"
      • @Plasmmer:您也可以在任何一种情况下使用 \:| tr -d \"| tr -d \' - 您只需将字符逐字传递给 tr。
      【解决方案4】:

      你可以这样做:

      ...existing_commands | sed 's/"//g'
      

      【讨论】:

      • 如果您当前的命令将"user_name" 作为输出,那么在最后添加| sed 's/"//g' 应该会给出user_name 作为输出。
      • no 不工作.. 如果我在最后使用“ > file”执行我的初始命令,它不会写入文件。也许与 {print $2} 有关。想法?
      • @user430830:如果给定的“sed”命令不起作用,那么后面的命令管道就会出现问题。您可能会发现在管道的各个阶段之间插入“tee fileN.out |”(用于各种不同的 N 值)以查看问题所在是有益的。
      猜你喜欢
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-16
      • 2021-07-02
      • 1970-01-01
      • 2021-05-13
      • 2018-01-14
      • 2019-07-26
      相关资源
      最近更新 更多