Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 提取两个模式之间的文本,不包括模式_Regex_Text_Awk_Sed_Grep - Fatal编程技术网

Regex 提取两个模式之间的文本,不包括模式

Regex 提取两个模式之间的文本,不包括模式,regex,text,awk,sed,grep,Regex,Text,Awk,Sed,Grep,考虑java-jar plantuml.jar-language的输出: ;type ;26 abstract actor ............................ ;color ;147 AliceBlue AntiqueWhite Aqua Aquamarine ............................ Wheat White WhiteSmoke Yellow YellowGreen ;EOF 我需要从没有周围字符串的文本中提取颜色。我读了好几篇文章

考虑
java-jar plantuml.jar-language
的输出:

;type
;26
abstract
actor

............................

;color
;147
AliceBlue
AntiqueWhite
Aqua
Aquamarine
............................
Wheat
White
WhiteSmoke
Yellow
YellowGreen

;EOF
我需要从没有周围字符串的文本中提取颜色。我读了好几篇文章和问答,没有找到答案。在这里我找到了答案

有一点细微差别:
;147
可以是任何其他值,
EOF
可以随时更改为其他值。我试过
sed-n'/\;颜色\s*\\d*/,/\n\n/
,但它不返回任何内容。请帮助我实现下一个结果:

AliceBlue
AntiqueWhite
Aqua
Aquamarine
Azure
Beige
Bisque
....................
Teal
Thistle
Tomato
Turquoise
Violet
Wheat
White
WhiteSmoke
Yellow
YellowGreen

听起来你需要的只是:

awk '/^;/{if (/[[:alpha:]]/) f=(/color/?1:0); next} f'

听起来你需要的只是:

awk '/^;/{if (/[[:alpha:]]/) f=(/color/?1:0); next} f'

使用sed删除不以
开头的模式之间的所有行

sed -n '/^;color/,/^;EOF/{/;/d;p}' file
要删除最后一个空行,请执行以下操作:

sed -n '/^;color/,/^;EOF/{/;/d;/^$/d;p}' file
或使用GNU sed:

sed -n '/^;color/,/^;EOF/{/^;\|^$/d;p}' file

使用sed删除不以
开头的模式之间的所有行

sed -n '/^;color/,/^;EOF/{/;/d;p}' file
要删除最后一个空行,请执行以下操作:

sed -n '/^;color/,/^;EOF/{/;/d;/^$/d;p}' file
或使用GNU sed:

sed -n '/^;color/,/^;EOF/{/^;\|^$/d;p}' file

这些
行是否真的存在于您的输入/输出中?如果没有,那么从你的问题中去掉它们。确保您的示例输入/输出是我们可以运行潜在解决方案来测试的内容。这些
行是否确实存在于您的输入/输出中?如果没有,那么从你的问题中去掉它们。确保您的示例输入/输出是我们可以运行一个潜在解决方案来测试它的东西。很好!非常感谢。请您详细解释一下它是如何工作的。1)什么是
?1:0
,2)什么是
f
?1)
(/color/?1:0)
是一个三元表达式(请参阅)。2)
f
是一个标志变量,使用
f
=
found
,当
上有“color”时设置-行,当
上有其他字母值时清除-line。如何修剪尾随换行?idk这意味着什么,但如果您询问如何仅打印非空白行,则将末尾的
f
更改为
f&&NF
。很好!非常感谢。请您详细解释一下它是如何工作的。1)什么是
?1:0
,2)什么是
f
?1)
(/color/?1:0)
是一个三元表达式(请参阅)。2)
f
是一个标志变量,使用
f
=
found
,当
上有“color”时设置-行,当
上有其他字母值时清除-line。如何修剪尾随换行?idk这意味着什么,但如果您询问如何仅打印非空白行,则将末尾的
f
更改为
f&&NF