Как извлечь строки из текстового файла, содержащего строку из списка в другом файле в порядке списка поиска?

Используйте номер UID, а не имя. Например, если odooимеет UID 1023 и GID 475, вы можете использовать эти номера напрямую:

sudo chown -R 1023:475 *
2
15.06.2020, 11:14
1 ответ

Предполагая, что ваш список строк не содержит пробелов, как в вашем примере:

$ awk -F'[^[:alnum:]_]+' '
    NR==FNR { strs[$0]; next }
    { for (str in strs) for (i=1; i<=NF; i++) if ($i==str) print str, FNR, $0 }
' file2 file1 | sort -k1,1 -k2,2n | cut -d' ' -f3-
it is the beginpoint of my career.
We can start our beginpoint anytime we want.
beginpoint
The end is always far.
end
The time we utilise to make our life good should be more.
time

Приведенное выше работает не только путем печати строки, содержащей совпадающую строку, но и совпадающей строки, а также номера строки, в которой она совпала (для сохранения относительного порядка после сортировки -не требуется, если мы использовали GNU сортировать по -s), затем сортировать, а затем удалять украшения, которые были добавлены на первом шаге. Вот шаг за шагом:

$ awk -F'[^[:alnum:]_]+' 'NR==FNR{strs[$0];next} {for (str in strs) for (i=1; i<=NF; i++) if ($i==str) print str, FNR, $0}' file2 file1
beginpoint 2 it is the beginpoint of my career.
end 3 The end is always far.
beginpoint 4 We can start our beginpoint anytime we want.
time 5 The time we utilise to make our life good should be more.
beginpoint 8 beginpoint
time 9 time
end 10 end

.

$ awk -F'[^[:alnum:]_]+' 'NR==FNR{strs[$0];next} {for (str in strs) for (i=1; i<=NF; i++) if ($i==str) print str, FNR, $0}' file2 file1 | sort -k1,1 -k2,2n
beginpoint 2 it is the beginpoint of my career.
beginpoint 4 We can start our beginpoint anytime we want.
beginpoint 8 beginpoint
end 3 The end is always far.
end 10 end
time 5 The time we utilise to make our life good should be more.
time 9 time

.

$ awk -F'[^[:alnum:]_]+' 'NR==FNR{strs[$0];next} {for (str in strs) for (i=1; i<=NF; i++) if ($i==str) print str, FNR, $0}' file2 file1 |
    sort -k1,1 -k2,2n | cut -d' ' -f3-
it is the beginpoint of my career.
We can start our beginpoint anytime we want.
beginpoint
The end is always far.
end
The time we utilise to make our life good should be more.
time
0
18.03.2021, 23:27

Теги

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