我是新用户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