如何删除 bash 中某个词后的所有文本,保留该词
How can I remove all text AFTER a word in bash, keeping the word
所以,如果我有这样的 .txt:
He.likes.coding
She.likes.juice
He.likes.coffee
变成:
He.likes
She.likes
He.likes
所以它会保留特殊文本 (.likes)
如果这个问题已经有答案,很抱歉,我没有找到。我找到的所有那些也删除了.likes。
你可以使用 sed。
sed 's/\.likes.*/.likes/' file
.*
匹配除换行符之外的任何字符,零次或多次。这里我们不需要添加 g
全局标志,因为每行只发生一次匹配。
或
使用捕获组。
sed 's/\(\.likes\).*//' file
这是一个awk
awk -F"likes" '{print FS}' file
He.likes
She.likes
He.likes
它使用 likes
分隔字段,然后打印它之前的所有内容和字段分隔符。
如果还有其他行不应该改变,使用这个:
awk -F"likes" 'NF>1{[=11=]=FS}1' file
它只会更改行 中有 likes
。
使用 GNU grep:
grep -oP '.*likes' file
输出:
He.likes
She.likes
He.likes
所以,如果我有这样的 .txt:
He.likes.coding
She.likes.juice
He.likes.coffee
变成:
He.likes
She.likes
He.likes
所以它会保留特殊文本 (.likes)
如果这个问题已经有答案,很抱歉,我没有找到。我找到的所有那些也删除了.likes。
你可以使用 sed。
sed 's/\.likes.*/.likes/' file
.*
匹配除换行符之外的任何字符,零次或多次。这里我们不需要添加 g
全局标志,因为每行只发生一次匹配。
或
使用捕获组。
sed 's/\(\.likes\).*//' file
这是一个awk
awk -F"likes" '{print FS}' file
He.likes
She.likes
He.likes
它使用 likes
分隔字段,然后打印它之前的所有内容和字段分隔符。
如果还有其他行不应该改变,使用这个:
awk -F"likes" 'NF>1{[=11=]=FS}1' file
它只会更改行 中有 likes
。
使用 GNU grep:
grep -oP '.*likes' file
输出:
He.likes She.likes He.likes