And*_*ins 7 command-line regex sed text-processing
我有一些 HTML 试图从中提取链接。现在文件看起来像这样。
website.com/path/to/file/234432517.gif" width="620">
website.com/path/to/file/143743e53.gif" width="620">
website.com/path/to/file/123473232.gif" width="620">
website.com/path/to/file/634132317.gif" width="620">
website.com/path/to/file/432432173.gif" width="620">
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用 sed" width="620">从所有行中删除。这是我的 sed 代码:
sudo sed -i "s/\"\swidth\=\"\d+\"\>//g" output
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用?我用谷歌搜索的所有内容都会导致一些看起来像这样的代码,但这由于某种原因不起作用。
ter*_*don 22
因为您使用的是 PCRE(Perl 兼容正则表达式)语法并且sed不理解它,所以默认情况下它使用基本正则表达式 (BRE)。它既不知道\s也不知道\d。您也在逃避各种不需要转义的事情(既\=没有\>做任何有用的事情,也没有做任何有用的事情),而不是逃避确实需要转义的事情(+仅表示+BRE 中的符号,您需要\+“一个或更多的”。
这应该做你需要的:
sed 's/" width="[0-9]\+">//g' file
Run Code Online (Sandbox Code Playgroud)
或者,使用扩展正则表达式:
sed -E 's/"\s*width="[0-9]+">//g' file
Run Code Online (Sandbox Code Playgroud)
最后,作为一般规则,在没有首先测试的情况下,您永远不会使用它以确保它有效,或者,如果您这样做,至少使用(任何文本都可以)来创建备份。sed -i-i-i.bak-i