删除文本文件中的 https 字符

删除文本文件中的 https 字符

我需要从 txt 文件中删除所有 http 和 https。

像这样:

http://ac.tecnicasdeinvasao.com
http://go.tecnicasdeinvasao.com
http://lp.tecnicasdeinvasao.com
https://ac.tecnicasdeinvasao.com
http://secreto.tecnicasdeinvasao.com
https://go.tecnicasdeinvasao.com
https://lp.tecnicasdeinvasao.com
https://secreto.tecnicasdeinvasao.com

ac.tecnicasdeinvasao.com
go.tecnicasdeinvasao.com
lp.tecnicasdeinvasao.com
ac.tecnicasdeinvasao.com
secreto.tecnicasdeinvasao.com
go.tecnicasdeinvasao.com
lp.tecnicasdeinvasao.com
secreto.tecnicasdeinvasao.com

我尝试使用 sed 但没有成功。

答案1

我更喜欢awksed所以这就是我要做的:

awk允许您定义自定义字段分隔符,这使你的问题相当简单:

假设包含完整 URL 的文件是tstfile.txt,声明字段分隔符( -F) as //,然后打印第二个字段 ( $2):

$ awk -F'//' '{print $2}' tstfile.txt
ac.tecnicasdeinvasao.com
go.tecnicasdeinvasao.com
lp.tecnicasdeinvasao.com
ac.tecnicasdeinvasao.com
secreto.tecnicasdeinvasao.com
go.tecnicasdeinvasao.com
lp.tecnicasdeinvasao.com
secreto.tecnicasdeinvasao.com

如果您希望将结果保存在文件中,可以使用重定向>somefile.txt

如果您的发行版使用 GNU 版本awk,又名gawk,您可以选择更新您的输入文件到位

$ awk -i inplace -F'//' '{print $2}' tstfile.txt
$

现在,内容tstfile.txt将与上面所示完全相同,这可能会为您节省一两个步骤 - 取决于您的最终目标。其他选项,包括以不同的文件名保存原始文件,请参见这个答案

答案2

因为你用 sed 询问

sed更容易阅读:

sed  -E 's/http.+[/]//'

sed更容易写:

sed -E 's/http.+\///'

两者都做同样的事情。sed使用 的格式/select/replace/,因为这样很难用\反冲来读取。

  • -E是使用正则表达式“较新”版本
  • s用于查找和替换s特林
  • .+有 2 个含义,.点代表任何字符,在本例中 s 和+符号用于选择 后面的所有其他内容.
  • 如果一个字符在正则表达式世界中具有特殊含义,您需要转义它们,通常带有\反作用。在这种情况下,你需要告诉sed选择直到最后一个的所有内容/,因此您需要像这样转义它,\/但更难阅读\///,最后一个是来自您也可以用括号转义//的格式,并且因为您想删除您所选择的内容,所以您什么也不写 - >/select/replace/[/]//

因为一切都始于H(是一样的),所以你可以让它更短

sed -E 's/.+\///'  
sed -E 's/.+[/]//'

这意味着 --> 选择从文本开头到最后一个的所有内容/-->whateverGoesHere/

答案3

尝试这个:

awk '{sub(/https?:\/\//,"");print}' file.txt > outfile.txt

awk循环遍历输入行,在每行上执行程序。我没有指定任何要匹配的正则表达式,因此大括号中的代码会在每一行上执行。该sub函数匹配斜杠之间的正则表达式,并将其替换为带引号的空字符串。正则表达式中的问号使“s”可选

相关内容