Если вывод такой, как указано выше, он находится на жестком диске. Вы можете получить / dev / root
, посмотрев на командную строку ядра:
$ cat /proc/cmdline | grep root
BOOT_IMAGE=/boot/vmlinuz-3.19.0-32-generic root=UUID=0cde5cf9-b15d-4369-b3b1-4405204fd9ff ro
Итак, / dev / root
эквивалентно разделу с UUID, указанным выше; ваши будут отличаться. Чтобы найти этот UUID, используйте
$ sudo blkid
/dev/sda1: UUID="0cde5cf9-b15d-4369-b3b1-4405204fd9ff" TYPE="ext4"
/dev/sda5: UUID="37bc6a9c-a27f-43dc-a485-5fb1830e1e42" TYPE="swap"
/dev/sdb1: UUID="177c3cec-5612-44a7-9716-4dcba27c69f9" TYPE="ext4"
. Как видите, соответствующий раздел - / dev / sda1
. Итак, ваш / tmp
находится на жестком диске. Еще один недостаток вывода df
- точка монтирования /
. Если вы смонтировали / tmp
в ОЗУ, вместо этого вы получите
$ df /tmp
Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 3640904 20 3640884 1% /tmp
grep -f <(sed 's/.*/\^&\\>/' town-list.txt) ma-towns.txt
Объяснение:
grep -f file
читает file
для получения списка шаблонов для сравнения. Мы ищем в списке ma-towns.txt
, используя шаблоны из town-list.txt
. Каждая отдельная строка рассматривается как новый шаблон, т.е. как новый поисковый запрос.
Однако этого недостаточно, поэтому я включил sed
, чтобы отформатировать поисковые запросы следующим образом:
^Acton\>
^Adams\>
^Agawam\>
Символ ^
заставляет grep соответствовать шаблону только в начале строки, а \>
заставляет grep соответствовать только в том случае, если слово заканчивается в этой точке.
Вместе это гарантирует, что поисковый запрос будет просматриваться только в начале строки (где находятся названия городов), и что поисковый запрос должен заканчиваться там, где заканчивается название города.
Сама команда sed выполняет команду s
(замена) в виде s/search/replace/
.
Поисковый запрос .*
соответствует целой строке. Замена, \^&\\\>
, заменяет ее на литеральный символ ^
, за которым следует исходная строка, а затем текст \>
.
Что делает этот ответ, чего не делает другой:
Waterloo
не будет соответствовать Waterlooville
)Это будет читать строки file2
и анализировать file1
с помощью grep
с помощью строк :
while read line; do
grep "${line}" file1
done < file2