Java 如果找到特定字符串,请删除一行

Java 如果找到特定字符串,请删除一行,java,ibm-integration-bus,extended-sql,Java,Ibm Integration Bus,Extended Sql,我是IIB的新手,目前我想要实现的是从TXT中删除一行,如果它包含一个特定的单词,例如下面的单词USA。我将其作为BLOB读取,然后将其转换为字符串。我应该使用Compute节点还是Java节点来实现这一点?提前谢谢 e、 g 以前 Hello my name is Malcom and I live in the USA 之后 当前流量 文件输入->计算->JavaCompute->文件输出 FileInput:从特定文件夹读取数据 计算:将一个字符串替换为另一个字符串(掩码) JavaC

我是IIB的新手,目前我想要实现的是从TXT中删除一行,如果它包含一个特定的单词,例如下面的单词USA。我将其作为BLOB读取,然后将其转换为字符串。我应该使用Compute节点还是Java节点来实现这一点?提前谢谢

e、 g

以前

Hello my name 
is Malcom and I live
in the USA
之后

当前流量 文件输入->计算->JavaCompute->文件输出

FileInput:从特定文件夹读取数据

计算:将一个字符串替换为另一个字符串(掩码)

JavaCompute:也许是为了删除行

FileOutput:要生成输出txt文件,如果使用文件输入节点的功能,可以在ESQL中满足您的要求

文件输入节点:

  • 记录和元素:记录检测=分隔
  • 将数据结束连接到FileOutput节点的完成文件
计算节点:

CREATE COMPUTE MODULE Thaqif_Compute

    CREATE FUNCTION Main() RETURNS BOOLEAN
    BEGIN
        SET OutputRoot = InputRoot;
        DECLARE line CHARACTER CAST(OutputRoot.BLOB.BLOB AS CHAR
                                    CCSID InputProperties.CodedCharSetId
                                    ENCODING InputProperties.Encoding);
        IF CONTAINS(line, 'USA') THEN
            RETURN FALSE;
        ELSE
            CALL maskMessage(line);
            SET OutputRoot.BLOB.BLOB = CAST(line AS BLOB 
                                            CCSID InputProperties.CodedCharSetId
                                            ENCODING InputProperties.Encoding);
            RETURN TRUE;
        END IF;
    END;

    CREATE PROCEDURE maskMessage(INOUT msg CHARACTER) BEGIN
        SET msg = REPLACE (msg, '431.111.55.113', 'XXX.XXX.XX.XXX');
        -- Other patterns removed for brevity
        SET msg = REPLACE (msg, 'Q1111111', 'XXXXXXXX');
    END;

END MODULE;
文件输出节点:

  • 记录和元素:记录定义=记录是分隔数据
输入示例:

Hello my name 
is Malcom and I live
in the USA
where 431.111.55.113 is masked
but Q2222222 is still ok
结果输出:

Hello my name 
is Malcom and I live
where XXX.XXX.XX.XXX is masked
but Q2222222 is still ok

为什么不将每个输入行视为一条记录(File input->record detection=Delimited,Delimiter=),然后仅将不包含模式的记录转发到File Output节点?这样,您就可以在ESQL中轻松地完成它。您介意再解释一下吗?我还是IIB的新手对不起,非常感谢!
Hello my name 
is Malcom and I live
in the USA
where 431.111.55.113 is masked
but Q2222222 is still ok
Hello my name 
is Malcom and I live
where XXX.XXX.XX.XXX is masked
but Q2222222 is still ok