Вывести строку, если она присутствует в двух отдельные столбцы

Странные символы при загрузке могут быть вызваны неправильной конфигурацией GRUB. Попробуйте эти решения, которые включают изменения в /etc/default/grub. После каждого изменения не забывайте обновлять GRUB (grub-mkconfig -o /boot/grub/grub.cfgили update-grub), а затем перезагружаться, чтобы проверить изменение.

1) Добавьте следующие строки:

GRUB_GFXMODE=,1024x768x32,auto
GRUB_GFXPAYLOAD_LINUX=keep

где — разрешение вашего экрана в виде xx, см. строку выше для примера.
Обратите внимание, что этот режим должен поддерживаться вашей видеокартой; чтобы получить список поддерживаемых режимов, запустите

sudo hwinfo --framebuffer

Подробнее здесь.

2) Если это все еще не работает, попробуйте добавить параметр vga=(примечание: устарело) в строку GRUB_CMDLINE_LINUX_DEFAULT:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash vga=792"

3) Если все еще эти решения не работают, попробуйте это (взято из предыдущего ответа):

Закомментируйте строку с помощью GRUB_CMDLINE_LINUX_DEFAULT.

Добавьте строки

GRUB_GFXMODE=x
GRUB_TERMINAL=console

, где x— собственное разрешение вашего монитора.

1
25.07.2017, 19:07
4 ответа

Беззастенчиво украдено у @cherdt с некоторыми улучшениями (предполагает оболочку типа zshили bashс поддержкойksh-вроде подстановки процессов):

f=filename; comm -12 <(cut -f1 < "$f" |sort) <(cut -f2 < "$f" | sort)
  • Сохранение имени файла в переменной помогает не повторять его
  • Не надо писать в файлы, чтобы потом сравнивать. Запись в файлы обычно требует их последующего удаления для очистки. Однако не делайте этого с огромными файлами. Подстановка процесса выглядит так, будто commчитает из файлов, тогда как это stdoutперенаправление на временныйfd
3
27.01.2020, 23:13

Вы можете использовать commдля сравнения двух файлов, поэтому сначала создайте отсортированный файл для каждого столбца:

  1. cat filename | cut -f1 | sort > column1
  2. cat filename | cut -f2 | sort > column2

Затем подавите первые 2 столбца comm, чтобы отобразить только те строки, в которых данные существуют в обоих файлах:

comm -12 col1 col2

1
27.01.2020, 23:13
awk 'NF!=1{cola[$1]++; colb[$2]++} END { for (item in cola ) { if( colb[item]>0 ) { print item } }' /path/to/input
1
27.01.2020, 23:13

С другим решением awk и простым

awk 'NR==FNR{seencol1[$1]++;next} ($2 in seencol1)' infile.txt infile.txt 

выход,

stringZ
stringT
2
27.01.2020, 23:13

Теги

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