使用awk时出现问题
|
我无法解决这个问题。当我执行此程序时,出现以下错误
\“第7行:寻找匹配的'\'\'\”时出现意外的EOF”
a=115292a1504606846976ULL
b=2
if [ \"$b\" = \"2\" ]; then
var1=`echo $a | awk -F\"U\" \'\\
{
var2=`echo $var1 | awk -F\"a\"
{print \" \"$2}\'`
}\\
fi
更新:来自其他最近关闭的问题
更具体地说,这是我的项目代码
if [ \"$FORMAT\" = \"java\" ]; then
cat $INPUT_FILE | awk -F\":\" \'\\
/^$/ { print \"\" }\\
/^\\/\\/.*/ { print \" \"$0}\\
/:string:/ { print \" public static final String \"$1\" = \"$3\";\" }\\
/:char:/ { print \" public static final char \"$1\" = \"$3\";\" }\\
/:ullong:/ { print \" public static final long \"$1\" = \"$3\";\" }\\
/:ulong:/ { print \" public static final int \"$1\" = \"$3\";\" }\\
/:long:/ { print \" public static final int \"$1\" = \"$3\";\" }\\
\' >> $CONST_FILE
fi;
现在我需要将$ 3(实际上是从另一个文件读取的值)截断为两部分(仅用于ullong)。可以说
$3=1256985361455ULL
我需要截断为1256985361455和ULL。 (仅当它是ullong时)
请帮我解决这个问题。
我尝试在下面使用另一个awk,但最终陷入混乱。
/:ullong:/ { print \" public static final long \"$1\" = \"$3\";\" }\\
没有找到相关结果
已邀请:
5 个回复
稀瓣囊
窃誓额
(很难在行内Markdown中显示反引号\'
\'。) 行“ 7”行开始有一个反引号表达式,该表达式终止于下一个未转义的反引号,即“ 8”之后的那个。然后,它读取该行的其余部分,并在下一行遇到一个单引号。当它寻找以下单引号时,没有任何引号-因此它报告一个错误。您可以演示以下步骤:
上面的脚本在
之后的反引号之前有一个转义符(反斜杠),因此现在反引号中的命令扩展到
行之后的反引号。这仍然不是有效的shell;带有
的行与
组合在一起以得到命令名称
,因此您仍然会遇到意外的EOF错误-因为缺少
末尾的
。再次修改脚本:
这注释掉了大括号,并且shell脚本现在为'valid \';现在该轮到18岁了,开始抱怨它给出的脚本无效。
其他人大致给了您所需的答案。我可能会使用Perl进行拆分(并且我怀疑如果我花足够的时间在中间数组ѭ20上,会产生行噪声脚本,那么我可能会丢失中间数组ѭ20):
但是,您也可以用
在一行中完成此操作,因此:
这会将输入拆分为\'a \'而不是\'U \';然后从第二个字段中删除\'ULL \'并进行打印。如果要在\'U \'上分割,则使用:
这样,.25中的正则表达式稍微复杂一些。
献导外拘
癸痊醒
讼乐