如何获取特定部分的线条

如何获取特定部分的线条

我是新用户awk,我知道如何剪切列、追加列和替换字符。现在我需要从一个巨大的文件中剪切一个特定的图案。该文件如下所示:

1catalina.org.apache.juli.FileHandler.level = FINE
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.

2localhost.org.apache.juli.FileHandler.level = FINE
2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.FileHandler.prefix = localhost.

3manager.org.apache.juli.FileHandler.level = FINE
3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.FileHandler.prefix = manager.
3manager.org.apache.juli.FileHandler.bufferSize = 16384

java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
2017-09-08 08:50:04.896 INFO 16323 --- [nio-8080-exec-8] c.c.c loginCOntroller.java:LOG:Successfully Logged In

由此(上面只是头部,文件要大得多),我需要用以下图案剪切所有行:

2017-09-08 08:50:04.896 INFO 16323 --- [nio-8080-exec-8] c.c.c loginCOntroller.java:LOG:

我用了

   sed 's/^.*java:LOG:=//' inpufile > outputfile

但这没有用。

答案1

尝试这个:

sed -n '/.*java:LOG:/p' inpufile > outputfile

命令sed -n '/pattern/p'仅打印符合以下条件的字符串与里面的图案相匹配//

您的命令 - sed 's/^.*java:LOG:=//'- 使用替代结构s/pattern/replace_string/(查找 apattern并将其替换为replace_string

从你的命令示例来看,sed我猜你只需要包含java:LOG:.这是真的?

注意你的文件名- 你错过了“t”字母 -输入文件, 但不是输入t文件

如果您需要与此字符串精确匹配:

2017-09-08 08:50:04.896 INFO 16323 --- [nio-8080-exec-8] c.c.c loginCOntroller.java:LOG:

..图案会太长

答案2

简单地与awk(按模式提取线条):

awk '/^[0-9]{4}-[0-9]{2}-[0-9]{2}.*\.java:LOG/' inputfile > outputfile

相关内容