gpt4 book ai didi

linux - (L)unix - 拆分然后过滤,将结果发送到标准输出

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:08:53 25 4
gpt4 key购买 nike

我似乎找不到使用 Unix/Linux 命令(无需编写脚本)执行此操作的好方法。不过,我认为这是可以做到的。

我想做的是读取一个文件的内容,用一些定界符将它们分开,然后丢弃任何与 RegEx 不匹配的片段(本质上是一个 map-filter-reduce 问题)。

有点像

cat original-file.sql | split --separator=';' | pcregrep -M '(.|\n)*needed_schema(.|\n)*' | result-file.sql

使得结果文件只包含语句中包含'needed_schema'的SQL语句。

原始文件.sql

SELECT * 
FROM information_schema.tables
WHERE table_schema = 'public'
;

SELECT *
FROM needed_schema.some_table
WHERE some_col = 'some value'
;

SELECT *
FROM needed_schema.some_other_table
WHERE some_other_col = 'some other value'
;

结果文件.sql

SELECT *
FROM needed_schema.some_table
WHERE some_col = 'some value'
;

SELECT *
FROM needed_schema.some_other_table
WHERE some_other_col = 'some other value'
;

最佳答案

考虑使用 awk 并分配 RS(记录分隔符)和 ORS(输出记录分隔符):

$ awk '/needed_schema/' RS=';' ORS=';' input


SELECT *
FROM needed_schema.some_table
WHERE some_col = 'some value'
;

SELECT *
FROM needed_schema.some_other_table
WHERE some_other_col = 'some other value'
;

正则表达式不是 PCRE 而是扩展正则表达式

关于linux - (L)unix - 拆分然后过滤,将结果发送到标准输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41109460/

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