LinuxForum.Fans
Тема

Удаление вхождения и дублей в текстовом файле

Автор: AlfaStriker 1 сообщений 2340 просмотров
14.09.2014 12:39 · отредактировано #392612

Есть текстовый файл с именем "vk.com.url.test" со следующим содержимым:

text

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

Если не правильно - поправьте пожалуйста.

Войдите или зарегистрируйтесь, чтобы ответить.