] вместо этого используйте []zsh[
]:[
setopt extendedglob
for f ($arg/**/*.(#i)(txt|h|py)(N.)) {
...
}
]
[]**/[
]: любой уровень подкаталогов[](#i)[
] должен включать нечувствительное к регистру совпадение для остальной части глобуса (как []~(i)[
] в []ksh93[
]). [](N.)[
] является классификатором глобуса. []N[
] должен не возвращать ошибку, если нет соответствующего файла и [].[
] должен выбирать только обычные файлы (эквивалент [] найти [
] -тип f[]-тип f[
]))). Вы можете добавить туда []D[
], чтобы также сопоставить точечные (скрытые) файлы и спуститься в скрытые папки (как []find[
] по умолчанию).[ Я думаю, что лучше с sed
, например: sed 's/\ / ahy /g'
и sed 's/\ / aly /g'
. Он заменит любой символ пробела для ahy
или aly
.
Также это возможно с awk
, но я не смог понять, как хранятся ваши данные :-/
EDIT:
Попробуйте это.
awk '{if ($1== "Организм:") {word = $2; print $0} else { if ($1=="соответствие") {print $0} else {print word $0}} Фамилия
как заданное исполнение awk
awk '/^Organism/{prefix=$2}/miR[0-9]{3}/{$0=prefix $0}1'
Да, awk
является подходящим инструментом для таких задач. Предполагая, что все данные находятся в одном файле, как показано в вопросе, попробуйте:
awk '
/^Organism:/ { prefix = $2 ; print ; next }
/^matching/ || !NF { print ; next }
{ print prefix, $1 }
'