sed / awk - 添加www。只有当URL缺少www时

时间:2014-01-12 11:28:03

标签: bash sed awk

如何检查文本中是否存在www?如果不是 - 添加www,但如果存在则不要触摸

例如

google.com
www.google.com
www.maps.google.com
test.test.test.com

输出应为

www.google.com
www.google.com
www.maps.google.com
www.test.test.test.com

我发现这样的一些:

awk -F. '{print "www." $0; next}; {print}'

但是这总是添加www

5 个答案:

答案 0 :(得分:4)

使用awk

awk '!/^www\./ {$0="www." $0}1' file
www.google.com
www.google.com
www.maps.google.com
www.test.test.test.com

答案 1 :(得分:0)

使用sed你可以这样做:

sed '/^ *www/!s/\(.\)/www.\1/' file
www.google.com
www.google.com
www.maps.google.com
www.test.test.test.com

使其成为内联编辑:

sed -i.bak '/^ *www/!s/\(.\)/www.\1/' file

您可以在awK中执行此操作:

awk -F'.' '$1!="www"{$0="www." $0}1' file
www.google.com
www.google.com
www.maps.google.com
www.test.test.test.com

答案 2 :(得分:0)

使用shell:

echo $1 | grep -q ^www. || echo -n www.; echo $1

答案 3 :(得分:0)

另一个选择

$ site='www.stackoverflow.com'
$ [[ $site != www.* ]] && echo "www.$site" || echo "$site"
www.stackoverflow.com
$ site='stackoverflow.com'
$ [[ $site != www.* ]] && echo "www.$site" || echo "$site"
www.stackoverflow.com

答案 4 :(得分:0)

如果你有Ruby

# echo "test.test.test.com" | ruby -e 'puts "www.#{gets.chomp}" if $_ !~/www/ '
www.test.test.test.com