удалите дублирующуюся запись из file1 если запись, существующая в file2

Именно по этой причине. В этом случае не следует уклоняться от скобок.

Одиночные кавычки ' уже говорят оболочке не беспокоиться о содержимом строки, поэтому она передается буквально в sed. Побег из скобки говорит sed ожидать окончания \) в качестве разделителя для подрегекса.

0
31.07.2014, 14:01
2 ответа

Сначала: желаемый результат должен быть :

y2  x2
y4  x4
y5  x5
y6  x6

поскольку "x3 y3" и "x1 y1" присутствуют в обоих файлах

, чтобы получить строки, которые присутствуют только в file1, можно просто сделать

grep -v -f file1 file2

Из man-страницы

-v
--invert-match
 Invert the sense of matching, to select non-matching lines. (-v is specified by POSIX.)

-f file
   --file=file
Obtain patterns from file, one per line. The empty file contains zero patterns, and therefore matches nothing. (-f is specified by POSIX.)  
2
28.01.2020, 02:37

Попробуйте следующее:

awk '{if($1>$2) print $2 "  " $1; else print $0;}' file1.txt file2.txt | sort -u > out.txt

это выведет:

x1  y1
x2  y2
x3  y3
x4  y4
x5  y5
x6  y6

awk просто переупорядочивает столбцы в алфавитном порядке, sort -u (уникальный) удаляет повторяющиеся строки.

0
28.01.2020, 02:37

Теги

Похожие вопросы