【问题标题】:Remove all hyperlinks in a text file, linux scripting删除文本文件中的所有超链接,linux脚本
【发布时间】:2023-03-23 00:25:01
【问题描述】:

我是脚本的新手,但我想学习它。 我要做的是从文本文件中删除所有出现的 http://* 之类的东西。我想用 sed 命令和正则表达式来做。

这是我到目前为止的想法:

sed 's/http:\/\/.*/ /' < input.txt > output.txt

此代码用空格替换所有超链接。但问题是它也删除了该行的其余部分。

我该如何解决这个问题?我曾尝试添加空格、“http://.*”或单词结尾“http://.*\>”或我在互联网上找到的其他技巧,但它们不起作用。

还有比使用 sed 更好的方法吗?

【问题讨论】:

    标签: regex linux sed


    【解决方案1】:

    Sed 是执行此操作的好方法。尝试将您的正则表达式更改为s!http://[^[:space:]]*! !g

    【讨论】:

    • 谢谢,它成功了。但是你能告诉我为什么 s!http://[^s]*! !没用(它引起了奇怪的事情),g 是什么意思?
    • @Nima:sed 中的 g 标志代表“全局”。它基本上意味着“匹配模式空间中输入正则表达式的所有实例”。默认情况下, sed 仅更改每行上模式的第一个实例(某些版本会替换整行,就像您的那样)。添加 'g' 标志使 sed 替换该行中任何位置的模式。
    • @NimaPourdamghani 还有,\s 我最初在正则表达式中是一个 PCRE 字符类。 sed 使用 POSIX 正则表达式,而不是 PCRE。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    相关资源
    最近更新 更多