LINUX.ORG.RU

скриптинг

 ,


0

1

Доброе время! Имеется лист (1) в котором идут в каждой строке номера, все они уникальные. Есть другой лист (2) в котором есть эти уникальные номера и другие, которые отсутствуют в листе (1). Необходимо удалить строки в которых содержатся номера в листе (1).

★★★

решил так

cat /tmp/target_file |grep -vf /tmp/file_with_numbers
причем file_with_numbers каждую строку взял в кавычки для точного совпадения

init_ ★★★
() автор топика
Последнее исправление: init_ (всего исправлений: 1)
Ответ на: комментарий от init_

плюсую ананаса. можно сразу grep /tmp/target_file -vf /tmp/file_with_numbers

dada ★★★★★
()
Последнее исправление: dada (всего исправлений: 1)
Ответ на: комментарий от sdio

чет я тупнул, не помогло, виной всему двойные кавычки ))) надо вставлять одинарные, а как седом добавить вконец строки одинарную кавычку? вначало строки вставил

init_ ★★★
() автор топика

Прошу прощения, что не через awk и sed. В рамках изучения мною питона, накропал следующий код.

$ cat l1l2.py

#!/bin/python
fn1 = "list1"
fn2 = "list2"
fn3 = "list2.out"

print "1) uniq list = ", fn1
print "2) work list = ", fn2
print "3) result list = ", fn3

try:
	f1 = open(fn1, "r")
	f2 = open(fn2, "r")
	f3 = open(fn3, "w")

	s1 = [x.strip() for x in f1.readlines()]
	s2 = [x.strip() for x in f2.readlines()]
except:
	pass

s3 = [str(x) + "\n" for x in s2 if x not in s1]
#remove last "\n"
s3[-1] = s3[-1].strip()

try:
	f3.writelines(s3)
except:
	pass

f1.close()
f2.close()
f3.close()

$ cat list1

11
21
32
44
$ cat list2
11
55
21
77
44
cat list2.out
55
77

justAmoment ★★★★★
()
Последнее исправление: justAmoment (всего исправлений: 1)
Ответ на: комментарий от sdio

блин %бу мозг, добавил -F и все хорошо

init_ ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.