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
。