Вот как я меняю все расширения файлов в текущем каталоге Debian.
rename "s/oldExtension$/newExtension/" *.txt
(Это команда Perl rename
, а не команда util-linux
. См. Почему утилита переименования в Debian / Ubuntu отличается от той, что используется в других дистрибутивах , например CentOS? )
Использованиеawk
:
awk 'NR==FNR{ (NR%2? keyword=$0: seen[keyword]=$0 ); next}
{ for (keys in seen)if ($0 ~ keys) {print $0, seen[keys] }
}' OFS='\n' file1 file2
Выход:
This is a search tool
http://google.com
This is your mail account
https://gmail.com
объяснение:
если это первый файл NR==FNR
и номер записи/строки четный NR%2
сохранить всю строку $0
в переменной с именем keyword
, иначе добавить эту строку в связанный массив с именем seen
с ключевым словом, найденным как это индекс, затем прочитайте строку next
.
... после перехода к первому файлу,с помощью for-loop
мы просматриваем массив , увиденный и переменную keys
, используемую для указания на элементы индексов этого массива, и проверяем, может ли это keys
совпадать в строках в file2
, затем print $0
, что tine, за которым следует значение его ключа через seen[keys]
, разделенное линией \n
.
Попробуйте также
awk '
NR == FNR {T[$0]
next
}
{for (t in T) if (t ~ $1) $1 = t
}
1
' file2 file1
This is a search tool
http://google.com
This is your mail account
https://gmail.com