我想解析看起来像这样的文件的每一行:
www.hello.by
https://www.google.com
http://www.stackoverflow.com
www.fedia.com
如果不是http://
或http://
https://
答案 0 :(得分:2)
你有没有尝试过这个?它非常简单..
您只需要逐行读取文件。你可以这样做:
while read line ; do
echo $line
done < your_file
然后你必须检查你的行是否以http://或https://:
开头if [[ $line =~ ^https?:// ]] ; then
echo $line
fi
..如果没有,则添加http:
if [[ $line =~ ^https?:// ]] ; then
echo $line
else
echo http://$line
fi
总结你得到:
while read line ; do
if [[ $line =~ ^https?:// ]] ; then
echo $line
else
echo http://$line
fi
done < your_file
您可能希望保存对文件的更改,然后将输出重定向到临时文件,最后用它替换现有文件:
while read line ; do
if [[ $line =~ ^https?:// ]] ; then
echo $line
else
echo http://$line
fi
done < data > data.tmp
mv data{.tmp,}
替代awk版本:
awk '{if($0 ~ /^https?/) print; else print "http://"$0}' data
修改文件:
awk '{if($0 ~ /^https?/) print; else print "http://"$0}' your_file > your_file.tmp ; mv your_file{.tmp,}
答案 1 :(得分:1)
使用sed
sed '\|^https\{0,1\}://|!s,^,http://,' file
http://www.hello.by
https://www.google.com
http://www.stackoverflow.com
http://www.fedia.com
答案 2 :(得分:1)
尝试以下sed命令
sed -i '/https\?:\/\//{t;}
s/^/http:\/\//
' YOUR_FILE