如何在 Linux 中删除分隔符之前的文本

如何在 Linux 中删除分隔符之前的文本

我需要删除分隔符之前的行中的文本。

例如:

(123434): hello::{apple,orange,mango}.

我需要先删除之前的文本:。 IE (123434)

linux中有没有命令可以完成这个任务?

答案1

这个sed命令应该可以解决问题。以下命令将覆盖该文件:

sed -i 's/^[^:]*:/:/' file

要仅打印输出,请删除该-i标志。要将输出放入新文件中,请删除该-i标志并重定向输出:

sed 's/^[^:]*:/:/' file > new_file

答案2

您可以使用cut

echo '(123434): hello::{apple,orange,mango}.' | cut -d: -f2-

答案3

你可以用一个非常简单的方法来做到这一点重击操作说明:

mytext="(123434): hello::{apple,orange,mango}."

echo ${mytext#*)}

这将打印: hello::{apple,orange,mango}..您可以以类似的方式剪切前缀和后缀。此外,前缀和后缀定义可以包含通配符。

剪切前缀 - 直到第一个前缀通配符匹配:${variable#prefix}

剪切前缀 - 直到最后一个前缀通配符匹配:${variable##prefix}

剪切后缀 - 直到第一个后缀通配符匹配:${variable%suffix}

剪切后缀 - 直到最后一个后缀通配符匹配:${variable%%suffix}

乍一看可能不太清楚,请看下面的例子:

mytext="xAxBxAxBx"
echo ${mytext#*A}    # will print: xBxAxBx
echo ${mytext##*A}   # will print: xBx
echo ${mytext%B*}    # will print: xAxBxAx
echo ${mytext%%B*}   # will print: xAx
echo ${mytext%%C*}   # will print: xAxBxAxBx

在最后一个示例中,模式不匹配,因此没有剪切任何内容。

相关内容