Вместо цветов я просто использую строку index_format
, чтобы показать наличие вложений, например:
set index_format = "[% Z] [ %? X? A &?]% D% -20.20F% s% g "
%? X? A &?
- это тернар, который говорит , если электронное письмо имеет ненулевое значение вложения , затем показывают символ "A", else показывают "". Вы действительно можете показать количество вложений, но меня обычно просто волнует, есть они или нет.
Вы можете использовать этот awk
:
$ awk 'FNR==NR {a[$i]; next}; !($1 in a)' f2 f1
r002:21:10 21 YAAAATTTGC * = nM:21
r0012:21:10 21 LLAAAATTTGC * + XM:21
FNR == NR {a [$ i]; next}
он читает первый файл и сохраняет его содержимое в массив a
. ! ($ 1 в a)
при чтении второго файла проверяется, находится ли первое поле в массиве a
. Если нет, печатает строку. Вы также можете выполнить
$ grep -wvFf file2 file1
r002:21:10 21 YAAAATTTGC * = nM:21
r0012:21:10 21 LLAAAATTTGC * + XM:21
From man grep
:
-F, --fixed-strings
Interpret PATTERN as a list of fixed strings, separated by
newlines, any of which is to be matched.
-f FILE, --file=FILE
Obtain patterns from FILE, one per line.
-v, --invert-match
Invert the sense of matching, to select non-matching lines.
-w, --word-regexp
Select only those lines containing matches that form whole
words. The test is that the matching substring must either be
at the beginning of the line, or preceded by a non-word
constituent character.
ПРИМЕЧАНИЕ : Это, однако, будет искать всю строку file1
полностью, а не только первый столбец.
Если порядок вывода не важен и ваша оболочка поддерживает подстановку процесса (bash поддерживает), вы можете использовать объединить
в отсортированных
файлах:
join -v 1 <(sort -k1,1 file1) <(sort -k1,1 file2) | column -t
r0012:21:10 21 LLAAAATTTGC * + XM:21
r002:21:10 21 YAAAATTTGC * = nM:21
Объяснение: объединить
файлы в первом столбце, -v 1
= вывести несовпадающие строки из первого файл. Файлы отсортированы
по их первому столбцу -k1,1
. Последний столбец -t
хорошо печатает.
Похоже, из другого потока я смог найти ответ с помощью этого метода,
Сравнение двух файлов с использованием Unix и Awk
FNR == NR {
f1[$1,$2,$3] = $0
f1_c14[$1,$2,$3] = 1
f1_c5[$1,$2,$3] = $4
next
}
f1_c14[$1,$2,$3] {
if ($4 != f1_c5[$1,$2,$3]) print f1[$1,$2,$3] ;
}
f1[$1,$2,$3] {
if ($4 != f1_c5[$1,$2,$3]) print $0;
}