如何在bash中删除单词之后删除所有文本,保留单词

时间:2015-02-15 17:33:02

标签: bash sorting text sed

所以,如果我有这样的.txt:

He.likes.coding
She.likes.juice
He.likes.coffee

变成:

He.likes
She.likes
He.likes

因此它将保留特殊文本(.likes)

如果已有答案,我很抱歉,但我没有找到。我发现的所有内容都删除了.likes。

3 个答案:

答案 0 :(得分:2)

你可以使用sed。

sed 's/\.likes.*/.likes/' file

.*匹配除换行符之外的任何字符,零次或多次。在这里,我们不需要添加g全局标记,因为每行都会发生一次匹配。

使用捕获组。

sed 's/\(\.likes\).*/\1/' file

答案 1 :(得分:2)

这是awk

awk -F"likes" '{print $1FS}' file
He.likes
She.likes
He.likes

使用likes分隔字段,然后打印字段前的所有内容和字段分隔符。


如果还有其他行不应更改,请使用:

awk -F"likes" 'NF>1{$0=$1FS}1' file

它只会更改行中有likes的行。

答案 2 :(得分:1)

使用GNU grep:

grep -oP '.*likes' file

输出:

He.likes
She.likes
He.likes