我正在尝试运行下面的命令,它给了我错误。关于如何修复的想法?我宁愿这是一个单行命令而不是脚本。
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 =”string ...'ID'string'
答案 0 :(得分: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
?
答案 1 :(得分:0)
管道的大多数元素都可以在awk内部表达。
我无法准确说出你想用最后一个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
来引用命令行选项。