删除方括号外的所有数据 [英] Delete all data outside square brackets
问题描述
如何删除方括号外的所有数据 []
?
示例:
[lipsum1; limpsum1; lipsum1] lipsum2; lipsum1; limpsum1; lipsum1] lipsum2
我想获得:
[lipsum1; limpsum1; lipsum1] [lipsum1; limpsum1; lipsum1]
您可以使用 [
和]
作为现场分离器,并打印每2场:
的awk -F'[] []''{为(i = 2; I< NF;我+ = 2)的printf[%S]%S,$ I, OFS;打印}'<< END
[lipsum1; limpsum1; lipsum1] lipsum2; lipsum1; limpsum1; lipsum1] lipsum2
A [B] C [D]。Ë
这里没有什么
[一件事]
结束
[lipsum1; limpsum1; lipsum1] [lipsum1; limpsum1; lipsum1]
并[b]并[d][一件事]
这怪异的字段分隔符 [] []
是可以匹配的 [
字符或]
字符。当给你的样品输入,awk将打破领域是这样的:
- (空字符串)
- lipsum1; limpsum1; lipsum1
- lipsum2; (带有前导空格)
- lipsum1; limpsum1; lipsum1
- lipsum2(带有前导空格)
所以,你可以看到你想要输出域#2,#4,中间用空格(加上括号后面)。结果
在为
循环遍历场2,4,6,等等。结果
在的printf
命令格式为所需的输出 - 默认OFS(输出字段分隔符)是一个空格结果。
在打印,
行只是增加了新行循环完成后。
How can I delete all data outside square brackets []
?
Example: from
[lipsum1;limpsum1;lipsum1] lipsum2;[lipsum1;limpsum1;lipsum1] lipsum2
I want to obtain:
[lipsum1;limpsum1;lipsum1] [lipsum1;limpsum1;lipsum1]
You can use [
and ]
as the field separators, and print every 2nd field:
awk -F '[][]' '{for (i=2; i<NF; i+=2) printf "[%s]%s", $i, OFS; print ""}' <<END
[lipsum1;limpsum1;lipsum1] lipsum2;[lipsum1;limpsum1;lipsum1] lipsum2
a [b] c [d] e
nothing here
[one thing]
END
[lipsum1;limpsum1;lipsum1] [lipsum1;limpsum1;lipsum1]
[b] [d]
[one thing]
This weird looking field separator [][]
is a regular expression that matches either the [
character or the ]
character. When given your sample input, awk will break down the fields like this:
- "" (empty string)
- "lipsum1;limpsum1;lipsum1"
- " lipsum2;" (with a leading space)
- "lipsum1;limpsum1;lipsum1"
- " lipsum2" (with a leading space)
So you can see that you want to output fields #2 and #4 (adding the brackets back) with a space in between.
The for
loop iterates over fields 2, 4, 6, and so on.
The printf
command formats the output as desired -- the default OFS (output field separator) is a space.
The print ""
line just adds the newline after the loop is done.
这篇关于删除方括号外的所有数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!