Есть текстовый файл с именем "vk.com.url.test" со следующим содержимым:
cs156.vk.com
cs203.vk.com
vk.com
http://vk.com
im78v4.vk.com
q31.queuev4.vk.com
q78.queuev4.vk.com
q62.queuev4.vk.com
q76.queuev4.vk.com
http://q31.queuev4.vk.com
http://m.vk.com
m.vk.com
q86.queuev4.vk.com
cs409822.vk.com
im17v4.vk.com
q48.queuev4.vk.com
cs314525.vk.com
im43v4.vk.com
q88.queuev4.vk.com
im75v4.vk.com
q21.queuev4.vk.com
im62v4.vk.com
cs335.vk.com
http://q27.queuev4.vk.com
http://q54.queuev4.vk.comВ нем есть строчки начинающиеся на - http://
Необходимо найти и удалить через sed вхождение - http://
Например в текстовом файле есть строчка с сайтом http://vk.com
В этой строчке надо удалить http://, а - vk.com оставить, чтобы получилось просто vk.com
Также в этом файле есть уже строчка с vk.com без http://, чтобы не дублировались желательно удалить дубли.
Сейчас через sed пытаюсь это сделать, научился только удалять строки с http://
Результат нравится, но это пока не то. Помогите с нужной командой.
Заранее спасибо
-------------------
UPDATE
-------------------
Удалил http:// через команду:
# sed 's/^[http:// ^t]*//' vk.com.url.test
Работает.
Теперь надо дубли убрать...
-------------------
UPDATE
-------------------
С дублями тоже разобрался:
# uniq vk.com.url.test >> vk.com.url.test1
Вот более лучшие варианты через awk:
# awk '! a[$0]++' # most concise script
# awk '!($0 in a) {a[$0];print}' # most efficient script
-------------------
UPDATE
-------------------
Итого сделал так:
sed -i -e 's/^[http:// ^t]*//' $1.url
cat $1.url |awk '! a[$0]++' > tmpfile;
mv tmpfile $1.url
Если не правильно - поправьте пожалуйста.