繁体   English   中英

如何使用 awk 使用正则表达式

[英]How to use regex using awk

我有一个文件,比如test.txt ,它看起来像一个 json,它包含一行数据:

{"a":"b"},{"c":"d, e, f"},{..} and so on

我需要将每对大括号中的所有数据保存在不同文件中的不同行中。

例如: result.txt

"a":"b"
"c":"d, e, f"

我在 bash 脚本中使用了 awk 和 regex

awk '/\{(.*?)\}/' test.txt  > result.txt

但它不是突然出现单个大括号,而是按原样打印确切的测试文件。

任何人都可以说发生了什么问题吗?

echo '{"a":"b"},{"c":"d e f"},{..}' |awk -v RS="{|}" '{gsub(/,/,"")} /./{print $0}'
"a":"b"
"c":"d e f"
..

注意:使用jq类的json编辑工具来处理 json 文件是个好主意。

或者,您可以使用带有环视的grep来仅捕获大括号之间的值:

grep -oP '(?<={).*?(?=})' test.txt > result.txt

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM