当我使用 awk 命令插入一行时,它给出了未终止的字符串错误。
输入文件就像
date mean rms bias
..... ..... .... .......
..... ..... ........ .........
...... ........ ....... .......
在这里我需要插入日期、平均值、均方根和偏差的新值。
我的脚本是这样的
echo $PDY $mean $rms $bias
awk '/Date/ { print; print "'$PDY' \t'$mean' \t'$rms' \t'$bias'"; next }1' file.txt
终端日志是这样的
+ echo 20180131 76.196 578.177 903.000
20180131 76.196 578.177 903.000
+ awk '/Date/ { print; print "20180131 \t' '76.196 \t578.177 \t903.000"; next }1' file.txt
awk: /Date/ { print; print "20180131 \t
awk: ^ unterminated string
print; print "20180131 \t
我的 awk 命令后面有一个“ ”(间隙/空格) 。我不知道为什么它会来
请给我一个解决方案。
答案1
您的字符串以'
第二个开头和结尾'
:
awk '/Date/ { print; print "20180131 \t'
错误消息中未终止的字符串是"20180131 \t
。
相反,使用"
和转义内部:"
\"
awk "/Date/ { print; print \"20180131 \t' '76.196 \t578.177 \t903.000\"; next }1" file.txt
答案2
该错误消息意味着awk
不喜欢您使用引号的方式。浏览一下您的awk
声明,我首先指出您在打印声明中频繁使用单引号。awk
将后面的单引号解释\t
为标记整个程序的结束awk
(您在关键字 后面以单引号开始awk
),并且此时您的 print 命令没有结束双引号(也没有右大括号)供您awk
发言)。
将变量传递到程序中的更简单方法awk
是使用命令行参数-V
,例如。awk -V pdy="$PDY" -V mean="$mean", and then use
pdyand
表示as native
awk` 变量。使用这种方法,将不需要大部分引用。