档案部分:
awk '/\/' RS='\' file虽然格式可能不正确,但会产生预期的结果:
(我想要整个块,包括,但可以按原样工作),
echo $TPNum
"P16"
awk -v TPNum=$TPNum '/\/' RS='\' file除了相同的警告:awk: warning: escape sequence `\<' treated as plain `<' awk: warning: escape sequence `\>' treated as plain `>'之外,不会产生任何结果。我以前在awk中使用过变量,没有问题。请问我在这里少了什么?
发布于 2021-01-12 03:24:53
如果您的文件是HTML或XML,那么您应该考虑使用为标记语言设计的工具。
但是,如果必须使用awk,那么AFAIK就不能在regexp常量/.../中使用变量。但是,您可以使用GNU用户指南所指的动态正则表达式或计算的正则表达式 --基本上是一个字符串表达式,您可以在~比较的RHS上使用它。所以:
$ TPNum='"P16"'
$ awk -v TPNum="$TPNum" '
$0 ~ "\\反斜杠需要在动态正则表达式中转义,因为字符串被扫描了两次:
如果对字符串进行两次扫描,会有什么不同?答案与转义序列有关,特别是反斜杠。要将反斜杠输入到字符串中的正则表达式中,必须键入两个反斜杠。
https://askubuntu.com/questions/1307227
复制相似问题