【问题标题】:Linux cut fields from inside text lineLinux从文本行内部剪切字段
【发布时间】:2020-08-21 09:38:38
【问题描述】:

我想从这行中删去 ;XXm m:;XXm:

Xmorg.camunda.bpm.engine.context          ;XXm m:;XXm ENGINE-XXXXX Exception while
Xma.ExceptionLoggingFilter    ;XXm m:;XXm Uncaught exception thrown
Xmb.ExceptionHandlerController;XXm m:;XXm handle exception

这会截断整行:

cut -d" " -f2,3 

我想要的结果是:

Xmorg.camunda.bpm.engine.context          ENGINE-XXXXX Exception while
Xma.ExceptionLoggingFilter    Uncaught exception thrown
Xmb.ExceptionHandlerController handle exception

或

Xmorg.camunda.bpm.engine.context ENGINE-XXXXX Exception while 
Xma.ExceptionLoggingFilter Uncaught exception thrown
Xmb.ExceptionHandlerController handle exception

【问题讨论】:

  • Works for me。可能是文件中有制表符而不是空格。
  • 我想要反向结果:),我想从这个文件中剪切 ;XXm m:;XXm,我不想在结果中包含这个文本,但除了它之外的所有内容。在描述中我添加了预期的结果。
  • The result I want is: 您想在ENGINE-XXXX 和Exception 之间添加换行符吗?

标签: shell cut


【解决方案1】:

我想要反向结果 :),我想从这个文件中剪切 ;XXm m:;XXm

cut --complement -d" " -f2,3 

或

cut -d" " -f1,4-

了解正则表达式。

sed 's/;XXm m:;XXm//'

【讨论】:

  • 它工作正常,但仅针对这一行,我在描述中添加了新行,这 ;XXm m:;XXm 将被剪切。
  • 是的 :) 抱歉。此外,这个 -f2,3 只削减一个空格,而不是全部
  • 已编辑。使用sed。
【解决方案2】:

我不明白它是否真的有效:

[Alex@Normandy templates]$ echo "Xmorg.camunda.bpm.engine.context ;XXm m:;XXm ENGINE-XXXXX BPMN Stack Trace:" | cut -d" " -f2,3 
;XXm m:;XXm

如果你想要反向,你可以使用 Python 之类的:


>>> x="Xmorg.camunda.bpm.engine.context ;XXm m:;XXm ENGINE-XXXXX BPMN Stack Trace:"
>>> x_splited=x.split()
>>> " ".join(x_splited[:1]+x_splited[3:])
'Xmorg.camunda.bpm.engine.context ENGINE-XXXXX BPMN Stack Trace:'

【讨论】:

  • 我想要反向结果:),我想从这个文件中剪切 ;XXm m:;XXm,我不想在结果中包含这个文本,但除了它之外的所有内容。在描述中我添加了预期的结果。
  • 我添加python解决方案。
【解决方案3】:

好吧,你以一种误导的方式使用了“cut”这个词。

cut -d" " -f1,4

这将从字符串中准确提取第一项和第四项

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 2015-04-17
    • 1970-01-01
    • 2021-11-07
    • 1970-01-01
    相关资源
    最近更新 更多