shell sed删除select char和行中第一个出现字符之前的所有内容

fdx2calv  于 2023-08-07  发布在  Shell
关注(0)|答案(3)|浏览(116)

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

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

字符串
返回:

Hello!


但我只需要

Hello!

mwyxok5s

mwyxok5s1#

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

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

字符串

wyyhbhjk

wyyhbhjk2#

您可以使用

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

字符串
这将删除最后一个:之前的所有文本,包括::后面的所有空格(如果有)。
参见online demo

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

vmpqdwk3

vmpqdwk33#

试试这个,用cut更简单:

cut -d ':' -f 4

字符串
对于-d,您可以选择分隔符,即空格
使用-f,您可以选择所需的正确冒号
结果:

Hello!


再见

相关问题