gpt4 book ai didi

linux - 删除方括号外的所有数据

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:28:52 26 4
gpt4 key购买 nike

如何删除方括号 [] 外的所有数据?

示例:来自

[lipsum1;limpsum1;lipsum1] lipsum2;[lipsum1;limpsum1;lipsum1] lipsum2

我要获取:

[lipsum1;limpsum1;lipsum1] [lipsum1;limpsum1;lipsum1]

最佳答案

您可以使用 [] 作为字段分隔符,并每隔 2 个字段打印一次:

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]

这个看起来很奇怪的字段分隔符 [][] 是一个匹配 [ 字符或 ] 字符的正则表达式。当给定您的样本输入时,awk 将像这样分解字段:

  1. ""(空字符串)
  2. “lipsum1;limpsum1;lipsum1”
  3. “唇膏2;” (带前导空格)
  4. “lipsum1;limpsum1;lipsum1”
  5. “lipsum2”(带前导空格)

因此您可以看到您想要输出字段 #2 和 #4(添加括号),中间有一个空格。
for 循环遍历字段 2、4、6 等等。
printf 命令根据需要格式化输出——默认的 OFS(输出字段分隔符)是一个空格。
print "" 行只是在循环完成后添加换行符。

关于linux - 删除方括号外的所有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23298138/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com