Sintetic的例子。 输入文件
help_key1
man_key1
result_key1
help_key2
man_key2
help_key3
result_key3
help_key4
我可以用
获取所有密钥sed -n -e' s / help _(。*)$ / \ 1 / p'
如何在其他搜索或替换中使用match \ 1?
问题1:如何过滤具有帮助和结果前缀的键?结果为:
key1 key3
问题2:我如何过滤有帮助的键以及man和结果前缀?结果为:
KEY1
仅使用sed,不使用bash。
答案 0 :(得分:3)
我建议awk
,因为它有利于处理群组数据
问题1:
awk -v RS="" -F_ '/help/ && /result/ {print $2}' file
key1
key3
在awk
中,您可以将记录选择器设置为空。这使它适用于由空行分隔的行组。
问题2:
awk -v RS="" -F_ '/help/ && /man/ && /result/ {print $2}' file
key1
如果订单始终相同,您可以这样做:
awk -v RS="" -F_ '/help.*man.*result/ {print $2}' file
key1
答案 1 :(得分:2)
帮助和结果
sed -n '/^help_.*/,/^$/ {
/^help_/ h
/^help_}/ !H
x
/help_\([a-zA-Z0-9_]*\)\(\n.*\)*\nresult_\1.*/ {
s//\1/p
b
}
x
}' YourFile
添加男人
sed -n '/^help_.*/,/^$/ {
/^help_/ h
/^help_}/ !H
/^$/ b test
$ b test
b
: test
x
/help_\([a-zA-Z0-9_]*\)\(\n.*\)*\nresult_\1.*/ {
/help_\([a-zA-Z0-9_]*\)\(\n.*\)*\nman_\1.*/ {
s//\1/p
b
}
}
}' YourFile
答案 2 :(得分:0)
如果您有权访问bash
words={a,n,t}{a,n,t}{a,n,t}{'\n'}
echo $words
输出:
AAA AAN AAT
等等。如果需要,输出可以通过 sort 和usr / dict传递。这被称为'支撑扩张' ,和其他一些语言有它。
我最喜欢的是echo {a,i} {s,t}给出"就像它是"
我猜你正在使用它来拼字游戏;)