linux 如何使用sed/grep来获取某个单词左边的所有字母,直到它碰到一个空格?[closed]

fhity93d  于 2023-01-04  发布在  Linux
关注(0)|答案(1)|浏览(138)
    • 已关闭**。此问题需要超过focused。当前不接受答案。
    • 想要改进此问题吗?**更新此问题,使其仅关注editing this post的一个问题。

19小时前关门了。
Improve this question
我得到了一个文本文件(有几行),可能如下所示

This is my website: interesting.website.com Do you like it?
cool.website.org and nice.website.de are also cool.

我想把它们改成

This is my website: new.website.com Do you like it?
new.website.org and new.website.de are also cool.

我想使用sed或grep选择website左侧的所有字符,直到它遇到一个空格,然后相应地更改它们。
我已经尝试过选择所有介于空格和website之间的字符,但是由于在一行中感兴趣的单词之前可能有几个空格和其他单词,这些不会给出一致的结果,因为如果在我想要更改的单词之前有不止一个空格,它似乎会感到困惑。

grep -oP '(?<=\s).*(?=website)' myfile

这是我在别的地方找到的,但还没有完全理解。它也只找到单词,不会替换它们。

k75qkfdt

k75qkfdt1#

如果要更改内容,应使用sed

sed -E 's/[^ ]+(\.website)/new\1/' file

结果

$ echo 'This is my website: cool.website.org' | sed -E 's/[^ ]+(\.website)/new\1/'
This is my website: new.website.org

相关问题