【发布时间】:2016-08-06 17:56:46
【问题描述】:
假设我有一个类似的 html 输入
<li>this is a html input line</li>
我想从以<li> 开头并以</li> 结尾的文件中过滤所有此类输入行。现在我的想法是使用下面的 awk 命令在第一个字段中搜索模式 <li> 并在最后一个字段中搜索模式 </li>
awk '$1 ~ /\<li\>/ ; $NF ~ /\</li\>/ {print $0}'
但似乎没有规定一次匹配两个字段,或者我犯了一些语法错误。你能帮帮我吗?
PS:我正在使用 Solaris SunOS 机器。
【问题讨论】:
-
单个正则表达式就可以了。
awk '/^ *<li>.*<\/li> *$/'- 我想不必要地逃离楔子是你的实际错误。还要注意$0是print的默认值,而在没有显式操作的情况下打印是默认值。 -
适配你的代码,用
&&代替;——awk '$1 ~ /\<li\>/ && $NF ~ /\</li\>/ {print $0}' -
很好,您提到您正在使用 Solaris,因为这通常会为您需要的答案添加特殊的“Solarisisms”。请务必在您发布的任何未来 Q 中提及这一点。祝你好运。