awk:非终止字符串

awk:非终止字符串,awk,terminal,Awk,Terminal,我正在尝试运行下面的命令,它给了我一个错误。关于如何修复的想法?我希望这是一个单行命令,而不是脚本 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\/roo

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

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放入一个字符串中,如下所示:


“url=”string…“ID”string“

看看你在上一个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

看看你在上一个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

管道的大多数元素都可以在awk内部表达

我无法确切地告诉您要对最后一个awk脚本执行什么操作,但这里有几点:

  • 你的“grep”实际上只是在寻找一串文本,而不是一个 regexp
  • 如果使用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脚本传入
字符串
变量。或者如果这是一个独立的awk脚本(使用
#!
shebang),您可以使用
ARGV

引用命令行选项,管道的大多数元素都可以在awk中表达

我无法确切地告诉您要对最后一个awk脚本执行什么操作,但这里有几点:

  • 你的“grep”实际上只是在寻找一串文本,而不是一个 regexp
  • 如果使用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脚本传入
字符串
变量。或者如果这是一个独立的awk脚本(使用
#!
shebang),您可以使用
ARGV

参考命令行选项。您能给我们一些示例输入和预期输出吗?我们可以修复您的语法错误(看起来像是乱引号),我强烈怀疑有更好的方法来实现您的目标。谢谢,更新了我的原始问题..您能给我们一些示例输入和预期输出吗?虽然我们可以修复您的语法错误(看起来像乱引号),我强烈怀疑有更好的方法来实现您的目标。谢谢,更新了我的原始问题。@它不会那样工作。无论如何,您的问题
为什么非终止字符串
得到了回答。您最好看看@ghoti的评论。@它不会那样工作。无论如何,您的问题
为什么非终止字符串
是answered。你最好看看@ghoti的评论。我想把它作为一个命令而不是一个脚本来做,这不可能吗?我想把它作为一个命令而不是脚本来做,这不可能吗?