文件:/home/jian/Desktop/pg_sources/main/postgres/src/test/regress/sql/test_setup.sql
246: --
247: -- Create some C functions that will be used by various tests.
248: --
249:
250: CREATE FUNCTION binary_coercible(oid, oid)
251: RETURNS bool
252: AS :'regresslib', 'binary_coercible'
253: LANGUAGE C STRICT STABLE PARALLEL SAFE;
254:
255: CREATE FUNCTION ttdummy ()
256: RETURNS trigger
257: AS :'regresslib'
258: LANGUAGE C;
259:
260: CREATE FUNCTION get_columns_length(oid[])
261: RETURNS int
262: AS :'regresslib'
263: LANGUAGE C STRICT STABLE PARALLEL SAFE;
我认为这些内容永远不会改变。
目前我正在使用
sed -i '250,263 s/^/--/' /home/jian/Desktop/pg_sources/main/postgres/src/test/regress/sql/test_setup.sql
注释掉 ss 函数,但这不安全,新行可以轻松添加在前面。
所以我试图找到一种方法来注释掉这些行。
模式将是:
注释掉以模式“C 函数”
开头的行逐行循环,以最后一行结束,具有模式“LANGUAGE C”
找到最后一个结束标记通常可以通过反转输入然后搜索范围为 来实现
/end-match/,/start-match/
。这样,end-match
中间的所有其他模式都包含在内。例如
或与
awk
或者按照@EdMorton的建议更简单:
使用任何 awk:
使用Raku(以前称为 Perl_6)
这个 Raku 答案单独注释了每个
CREATE FUNCTION
段落。它使用 Raku 的/…/fff/…/
“触发器”运算符。输入示例:
示例输出:
https://docs.raku.org/routine/fff
https://docs.raku.org/language/5to6-nutshell#if_elsif_else_unless
https://raku.org