有一个文本文件,其中包含以下信息:
[[parent]]
[son]
[daughter]
如何仅获取[son]和[daughter]?
$0 ~ /\[([a-z])*\]/ ???
*
放在圆括号内(以便将整个文本放入唯一组中),并记得使用^
和$
定界符(以避免匹配[[parent]]
):^\[([a-z]*)\]$
匹配以字母开头的任何方括号。
awk '/^\[[a-z]/' file
awk -F '[][]+' 'NF && !/\[\[/{print $2}' file
son
daughter
awk命令解析:
-F '[][]+' # set input field separator as 1 or more of [ or ]
NF # only if at least one field is found
!/\[\[/ # when input doesn't start with [[
[a-z]
并不一定只匹配小写字母,除非这正是您想要的。根据您的语言环境设置,[a-z]
可能会匹配aAbBcC...yYz
或其他内容。为了始终仅匹配小写字母,请改用 POSIX 字符类[[:lower:]]
。 - Ed Morton