1

我正在寻找包含以下内容的文件:

    http://www.site1.com/d23bdbd0fbc517d34, r N 4
    https://www.site2.com/file/d23bdbd0fbc517d34, X
    http://www.site3.com/file/d23bdbd0fbc517d34
    https://www.site4.edu/site/d23bdbd0fbc517d34

我需要使用 sed 来获得这种输出:

    www.site1.com
    www.site2.com
    www.site3.com
    www.site4.edu

帮助!我无法让它完全正常工作。从技术上讲,我正在为 Windows 使用 sed.exe,但它可能非常相似。

4

2 回答 2

2
$ cat file.txt
    http://www.site1.com/d23bdbd0fbc517d34, r N 4
    https://www.site2.com/file/d23bdbd0fbc517d34, X
    http://www.site3.com/file/d23bdbd0fbc517d34
    https://www.site4.edu/site/d23bdbd0fbc517d34
$ sed -r 's@.*//([^ /]+).*@\1@g' file.txt
www.site1.com
www.site2.com
www.site3.com
www.site4.edu

如果你没有-rswitch :

sed 's@.*//\([^ /]\+\)[/ ].*@\1@g' file.txt

此外,在 IIRC 下,使用双引号而不是单引号。

所以也许:

sed.exe "s@.*//\([^ /]\+\)[/ ].*@\1@g" file.txt
于 2012-11-08T01:28:31.790 回答
1

另一个变体是:

sed '\#.*www[.]\([^/]*\).*# s::\1:'

将显示

site1.com
site2.com
site3.com
site4.edu

@ThinkPad-T420:~$ sed --version 
GNU sed version 4.2.1
于 2012-11-08T01:54:37.060 回答