【问题标题】:awk: non-terminated stringawk:非终止字符串
【发布时间】:2012-10-11 23:47:19
【问题描述】:

我正在尝试运行下面的命令,但它给了我错误。关于如何修复的想法?我宁愿这是一个单行命令而不是脚本。

grep  "id\": \"http://room.event.assist.com/event/room/event/" failed_events.txt |
head -n1217 |
awk -F/ ' { print $7 } ' |
awk -F\" ' { print "url \=  \"http\:\/\/room\.event\.assist\.com\/event\/room\/event\/'{ print $1 }'\?schema\=1\.3\.0\&form\=json\&pretty\=true\&token\=582EVTY78-03iBkTAf0JAhwOBx\&account\=room_event\"" } '
awk: non-terminated string url =  "ht... at source line 1
 context is
     >>>  <<< 
awk: giving up
 source line number 2

下面的行导出了一列 ID:

grep  "id\": \"http://room.event.assist.com/event/room/event/" failed_events.txt |
    head -n1217 |
    awk -F/ ' { print $7 } '

156512145
898545774
454658748
898432413

我希望将上面的 ID 变成这样的字符串:

" url = "字符串...'ID'字符串"

【问题讨论】:

  • 你能给我们一些示例输入和预期输出吗?虽然我们可以修复您的语法错误(看起来像乱七八糟的引号),但我强烈怀疑有更好的方法来实现您想要做的事情。
  • 谢谢,更新了我原来的问题..

标签: awk terminal


【解决方案1】:

看看你在上次的 awk 中有什么:

 awk -F\" 
 '  #single start here
    { print "  #double starts for print, no ends

        url \=  \"http\:\/\/room\.event\.assist\.com\/event\/room\/event\/
 '   #single ends here???

        { print $1 }'..... #single again??? ...
(rest codes)

您想打印出准确的{print } 吗?我不这么认为。你为什么要嵌套print

【讨论】:

  • @它不会那样工作。无论如何,您的问题why non-terminated string 已得到解答。你最好看看@ghoti 的评论。
【解决方案2】:

管道的大部分元素都可以在 awk 中表达。

我不能确切地告诉你想用最后一个 awk 脚本做什么,但这里有几点:

  • 您的“grep”实际上只是在寻找一串文本,而不是 正则表达式。
  • 如果您使用 awk,您可以节省时间并简化事情 index() 函数而不是 RE。输出格式几乎总是 最好使用 printf() 处理。

由于您尚未提供输入数据,因此我无法测试此代码,因此如果它不起作用,您需要对其进行调整。但这里是:

awk -F/ '
  BEGIN {
    string="id\": \"http://room.event.assist.com/event/room/event/";
    fmt="url = http://example.com/event/room/event/%s?schema=whatever\n";
  }

  count == 1217 { nextfile; }

  index($0, string) {
    split($7, a, "\"");
    printf(fmt, a[0]);
    count++;
  }' failed_events.txt

如果您愿意,可以使用 awk 的 -v 选项从调用此 awk 脚本的 shell 脚本中传入 string 变量。或者,如果这是一个独立的 awk 脚本(使用 #!shebang),您可以使用 ARGV 引用命令行选项。

【讨论】:

  • 我希望将其作为单个命令而不是脚本来执行,这不可能吗?
猜你喜欢
  • 2019-10-17
  • 2014-09-23
  • 1970-01-01
  • 1970-01-01
  • 2012-01-24
  • 1970-01-01
  • 2021-10-16
  • 1970-01-01
  • 2011-04-15
相关资源
最近更新 更多