цикл grep :Я использую каждую строку одного файла как запрос, чтобы найти совпадения с другим файлом. Почему мой вывод несовместим?

Опираясь на ответ из theY4Kman, вот как это сделать без Python:

dbus-send --type=method_call --dest=org.xfce.Thunar /org/xfce/FileManager org.xfce.FileManager.DisplayFolderAndSelect string:"/home/user/Downloads" string:"File.txt" string:"" string:""

Единственное предостережение заключается в том, что вам нужно разделить путь к папке и имя файла.

1
13.04.2021, 12:59
1 ответ

Вы получаете один идентификатор, скажем, id1, а затем извлекаете все строки, соответствующие этому идентификатору, в matches. Затем вы извлекаете все строки , не соответствующие , в missing.

Для следующего идентификатора id2вы затем добавляете строки, соответствующие этому идентификатору, к matches, а строки, не соответствующие id2, к missing.

Теперь missingсодержит все строки, не содержащие id1, затем все строки, не содержащие id2. Обратите внимание, что строка, содержащая id1, но не содержащая id2, будет находиться в missingиз этой второй итерации вашего цикла.

Вместо этого учитывайте все идентификаторы одновременно:

grep -f query_ids -Fw    my_file >matches
grep -f query_ids -Fw -v my_file >missing

Здесь я предоставляю grepшаблоны из query_idsс помощью -f. Я прошу grepрассматривать строки в query_idsкак строки запроса (-F, т.е. не регулярные выражения ), и сопоставлять их в my_fileкак целые слова (-w, чтобы id2не совпадает напримерid23).

Первая команда извлечет все строки, содержащие любой из идентификаторов. Вторая команда извлечет все строки, которые не содержат ни одного из идентификаторов.

Здесь нет никакой необходимости в цикле.

3
28.04.2021, 22:53

Теги

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