【问题标题】:sed leaves only first lettersed 只留下第一个字母
【发布时间】:2018-07-31 11:55:18
【问题描述】:

如果是 Windows 事件日志,我想删除日志中的大部分行。

我在 EventCode=4624 上测试过——登录成功

02/01/2018 09:56:03 AM
LogName=Security
SourceName=Microsoft Windows security auditing.
EventCode=4624
EventType=0
Type=Information
ComputerName=COMPUTER1
TaskCategory=Logon
OpCode=Info
RecordNumber=1072237543
Keywords=Audit Success ...

我尝试如下使用 sed:

sed "s/(?!Type\=\w+).+//g"

但这让我只有一个字母“T”,如下所示:

T

我做错了什么?

预期输出:

Type=Information

【问题讨论】:

  • 你在sed "/Type=[[:alnum:]_]/!d"之后吗?预期的输出是什么?
  • 您要删除什么样的行?
  • 你的问题很模糊。请添加更多细节
  • @akuzma,请务必在代码标签中添加预期输出以避免混淆。
  • “Windows 事件日志”。如果这确实是一个 MS Windows 文件,那么您需要将 \r\n 行尾更改为 \n。使用dos2unix file(但不要指望该日志文件之后可以在 Windows 中工作,在副本上工作?)。祝你好运。

标签: regex sed


【解决方案1】:

你可以使用

sed -E "/^Type=[[:alnum:]_]+$/!d"

它将删除所有不匹配的行

  • ^ - 行首
  • Type= - 文字字符串
  • [[:alnum:]_]+ - 1 个或多个字母数字或 _ 字符
  • $ - 行尾。

请参阅online demo

【讨论】:

    猜你喜欢
    • 2021-06-12
    • 2012-07-15
    • 1970-01-01
    • 1970-01-01
    • 2011-12-13
    • 2022-11-04
    • 1970-01-01
    • 2019-07-12
    • 2012-04-09
    相关资源
    最近更新 更多