我是bash脚本的新手,我很难弄清楚这个问题。我有大约200个遵循这种模式的文件:
ANÁLISE DA GLOSA FUNGICIDA
A ANÁLISE RESULTA EM:
S='Glosa02626354' = "agente que destrói ou previne o crescimento de fungos"
{antifúngico: O I]antifúngico clássico utilizado no tratamento não previne a disseminação típica da infecção.,
agente antifúngico: Os resultados sugerem a utilização terapêutica do extrato do limão como I]agente antifúngico na Odontologia.,
fungicida: A duração do ]fungicida no carpete tem garantia de cinco anos.,
antimicótico: Os grupos nomearam o I]antimicótico e realizaram campanha de lançamento fictícia, com material técnico de divulgação e brindes.,
agente antimicótico: Em caso de infecção, deverá ser instituído o uso de um I]agente antimicótico.}
Chave: FUNGICIDA <noun.artifact>
ILI: 02626354
Sense 1
{02626354} <noun.artifact> antifungal, antifungal agent, fungicide, antimycotic, antimycotic agent -- (any agent that destroys or prevents the growth of fungi)
=> {13935705} <noun.substance> agent -- (a substance that exerts some force or effect)
=> {00005598} <noun.Tops> causal agent, cause, causal agency -- (any entity that causes events to happen)
=> {00001740} <noun.Tops> entity -- (that which is perceived or known or inferred to have its own distinct existence (living or nonliving))
在这种情况下,我必须在大括号之间存储以下值:'antifúngico','agenteantifúngico','fungicida','antimicótico'和'agenteantimicótico'在一个变量中。这些词当然会在每个文件中都有所不同。为了比较,这是另一个文件:
ANÁLISE DA GLOSA VIA ÁPIA
A ANÁLISE RESULTA EM:
S='Glosa02634922' = "estrada da antiga Roma, na Itália, extendendo-se ao sul, de Roma a Brindisi; iniciada em 312 AC"
{Via Ápia: Toda a I]Via Apia era conhecida quer pela sua extensão, quer pela sua extraordinária beleza.}
Chave: VIA ÁPIA <noun.artifact>
ILI: 02634922
Sense 1
{02634922} <noun.artifact> Appian Way#1 -- (an ancient Roman road in Italy extending south from Rome to Brindisi; begun in 312 BC)
=> {03390668} <noun.artifact> highway#1, main road#1 -- (a major road for any form of motor transport)
=> {03941718} <noun.artifact> road#1, route#2 -- (an open way (generally public) for travel or transportation)
=> {04387207} <noun.artifact> way#6 -- (any artifact consisting of a road or path affording passage from one place to another; "he said he was looking for the way out")
=> {00019244} <noun.Tops> artifact#1, artefact#1 -- (a man-made object taken as a whole)
=> {00016236} <noun.Tops> object#1, physical object#1 -- (a tangible and visible entity; an entity that can cast a shadow; "it was full of rackets, balls and other objects")
=> {00001740} <noun.Tops> entity#1 -- (that which is perceived or known or inferred to have its own distinct existence (living or nonliving))
=> {00002645} <noun.Tops> whole#2, whole thing#1, unit#6 -- (an assemblage of parts that is regarded as a single entity; "how big is that part compared to the whole?"; "the team is a unit")
=> {00016236} <noun.Tops> object#1, physical object#1 -- (a tangible and visible entity; an entity that can cast a shadow; "it was full of rackets, balls and other objects")
=> {00001740} <noun.Tops> entity#1 -- (that which is perceived or known or inferred to have its own distinct existence (living or nonliving))
这里,变量只有一个值,字符串'ViaÁpia'。
更新:我找到了一种方法,可以使用一些正则表达式向导来挑出相关的行:
grep ':*\.,' file_name.txt
第一个示例的此命令的输出是
{antifúngico: O I]antifúngico clássico utilizado no tratamento não previne a disseminação típica da infecção.,
agente antifúngico: Os resultados sugerem a utilização terapêutica do extrato do limão como I]agente antifúngico na Odontologia.,
fungicida: A duração do ]fungicida no carpete tem garantia de cinco anos.,
antimicótico: Os grupos nomearam o I]antimicótico e realizaram campanha de lançamento fictícia, com material técnico de divulgação e brindes.,
答案 0 :(得分:0)
如果您只想将正则表达式匹配的结果分配给bash中的变量,那么应该这样做:
myVar=$(cat file_name.txt|grep ':*\.,')
编辑:
这可能会让你更近一点:
myVar=$(cat file_name.txt|grep ':*\.,'|./x.pl)
x.pl在哪里:
#!/usr/bin/perl
while (<STDIN>) {
my @x = split /,/;
foreach (@x) {
print $1 . "\n" if /\{?\W*(.*?)\:/;
}
}
这将提取您想要的4个单词,由换行符分隔。如果那就是你想要的,我还不完全清楚。
答案 1 :(得分:0)
如果你有GNU grep,你可能会对grep -Po '(?<={)[^:]+(?=:)'