Как извлечь строки из исходного файла с эталонным файлом, добавить в результирующий файл?

Просто используйте строку формата для внешнего вызоваdate:

$ date -d "-$(date +%d) days +1 month" +%d
31
1
01.09.2018, 12:09
2 ответа

Если вы пытаетесь использовать значения в r.txtкак ключи для извлечения совпадающих многострочных -записей из s.txt, попробуйте

awk 'NR==FNR {u[$2]++; next} $NF in u' r.txt RS= s.txt
  • процесс r.txtс разделителем записей по умолчанию (новой строки ), построение ассоциативного массива uс ключами из второго поля, разделенного пробелами -; затем
  • сброс разделителя записей RS=для переключения в режим абзаца для второго файла
  • обработка s.txtв режиме абзаца, т.е. обработка каждой пустой -строки -разделенного блока как единой записи, последнее значение поля которой $NFможет затем использоваться в качестве значения поиска вu
  • если $NFсуществует в u, вывести всю запись

Чтобы добавить пробел между совпавшими записями:

Если у вас есть GNU awk (gawk), вы можете использовать специальную переменную RT, чтобы вернуть исходные разделители абзацев:

gawk 'NR==FNR {u[$2]++; next} $NF in u {print $0 RT}' r.txt RS= s.txt

В более общем смысле,вы можете добавить одну дополнительную новую строку после каждой совпадающей записи:

awk 'NR==FNR {u[$2]++; next} $NF in u {print $0 "\n"}' r.txt RS= s.txt

или добавьте дополнительную новую строку к стандартному разделителю полей вывода :

awk 'NR==FNR {u[$2]++; next} $NF in u' r.txt RS= ORS='\n\n' s.txt
2
28.04.2021, 23:42

Из вашего вопроса я понял, что вы хотели бы использовать код для чтения ключевого слова userв r.txt, а затем искать это ключевое слово в s.txt. Наконец, выведите строку, относящуюся к этому ключевому слову (, и три предыдущие строки )in s.txt. Вы можете записать эти строки в файл с именем"code":

#!/bin/bash
if  [[ `egrep user9 r.txt` ]] ; then 
grep -B 3 user9 s.txt
fi

Предоставьте этому файлу "code"разрешения, затем запустите его в терминале следующим образом:

code > add.ldif

Вывод:

dn: cn=task,cn=Groups,dc=domain 
changetype: modify 
add: uniquemember 
uniquemember: cn=user9,cn=users,dc=domain

Допустим, у вас есть две записи для user9в s.txtследующим образом:

dn: cn=task,cn=Groups,dc=domain 
changetype: modify 
add: uniquemember 
uniquemember: cn=user1,cn=users,dc=domain

dn: cn=task,cn=Groups,dc=domain 
changetype: modify 
add: uniquemember 
uniquemember: cn=user9,cn=users,dc=domain

dn: cn=task,cn=Groups,dc=domain 
changetype: modify 
add: uniquemember 
uniquemember: cn=user18,cn=users,dc=domain

dn: cn=XXX,cn=XXX,dc=XXX 
changetype: XXX 
add: XXX 
uniquemember: cn=user9,cn=users,dc=domain

Предыдущий код найдет две записи для user9:

dn: cn=task,cn=Groups,dc=domain 
changetype: modify 
add: uniquemember 
uniquemember: cn=user9,cn=users,dc=domain
--
dn: cn=XXX,cn=XXX,dc=XXX 
changetype: XXX 
add: XXX 
uniquemember: cn=user9,cn=users,dc=domain
0
28.04.2021, 23:42

Теги

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