在bash中使用grep和sed的问题

时间:2018-01-08 05:28:16

标签: bash sed grep

我正在使用以下方法从文本文件中提取域名,子域名和ips:

grep -oE '[[:alnum:]]+[.][[:alnum:]_.-]+' "extra-domains.txt" | sed 's/www.//' | sort -u > outputfile.txt

我正在使用此bash更快地运行它:extract-domains.sh text-with-domains.txt

#!/bin/bash
FILE="$1"
while read LINE; do
  grep -oE '[[:alnum:]]+[.][[:alnum:]_.-]+' "$LINE" | sed 's/www.//' | sort -u > outputfile.txt
done < ${FILE} 

但是在运行bash时,我一直收到“没有这样的文件或目录”的多个错误。

任何人都可以帮我一把吗?感谢。

1 个答案:

答案 0 :(得分:3)

你写它的方式,grep将“$ LINE”作为文件名。这是它应该做的吗?

编辑:制作while循环并逐行读取文件是没有意义的。它会慢得多。你应该写这样的脚本:

#!/bin/bash
grep -oE '[[:alnum:]]+[.][[:alnum:]_.-]+' "$1" | 
    sed 's/www.//' | 
    sort -u

并称之为:

extract-domains.sh "extra-domains.txt" > outputfile.txt