【问题标题】:sed remove select char and everything before first occurrence of character in linesed 删除选择字符和第一次出现字符之前的所有内容
【发布时间】:2021-11-14 09:54:21
【问题描述】:

我找到了这个正则表达式 sed -i 's/.*\(:.*\)/\1/g' file.txt 用于在 : 之前删除,但我也需要删除 :,结果应用此正则表达式:

[09/11/2020 15:01:37] Name: Hello!

返回:

Hello!

但我只需要

Hello!

【问题讨论】:

  • ()中取出:

标签: regex shell sed


【解决方案1】:

你可以使用

sed -i 's/.*: *//' file.txt

这将删除直到最后一个: 的所有文本,包括:: 之后的所有空格(如果有)。

online demo

#!/bin/bash
s='[09/11/2020 15:01:37] Name: Hello!'
sed 's/.*: *//' <<< "$s"
# => Hello!

【讨论】:

    【解决方案2】:

    不要使用捕获组复制: 之后的所有内容,而是将: 之前的所有内容替换为空字符串。

    sed -i 's/^.*://' file.txt
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多