Perl one -вкладыш здесь:
perl -F'\t' -lane '$r{$F[0].$F[1].$F[2].$F[3].$F[4]}=$_ if $F[8]=~/\// or $F[8]=~[A-Z] or $F[7]=~/\d/ or $F[6]=~/\b(\d\d)[ACTG]/ and $1<=50; END{print $r{$_} for (keys %r)}' file
Комментарии:
Решение perl
было предложено при условии, что оно доступно в вашей системе. При необходимости его будет легко переписать в awk
, учитывая, что логика и синтаксис очень похожи.
Условия основаны на ваших спецификациях и awk
сниппете. Как уже указывалось в комментариях, по крайней мере один из них не соответствует вашему образцу входного файла.
Распечатывается последняя найденная запись с таким же ключом.
Записи печатаются в случайном порядке.
Экспортируйте текущий crontab в файл, удалите crontab, затем используйте ранее созданный файл.
$ crontab -l > cron_content
$ crontab -r
$ <this is where you do your stuff>
$ crontab cron_content
Вы можете использовать приведенный ниже скрипт для добавления или удаления комментариев из crontab.
#!/bin/bash
# you must have permission to read the crontab
if [[ $1 == "-add" ]]; then
crontab -l > /tmp/cron_export
awk '$0="#"$0' /tmp/cron_export > /tmp/cron_comment
crontab -r
crontab cron_comment
elif [[ $1 == "-remove" ]]; then
crontab -l > /tmp/cron_export
awk '{ print substr($0,2) }' /tmp/cron_export > /tmp/cront_uncomment
crontab -r
crontab cron_uncomment
else
echo "no option was selected. Please use -add to add comments or -remove to remove comments"
fi
# Remove all the create files for the operations
for f in /tmp/cron*; do
[ -e "$f" ] && rm cron* || echo "No files to remove were found"
break
done
Использование скрипта должно быть:
добавить комментарии
./youscriptname.sh -add
чтобы удалить комментарии
./youscriptname.sh -remove
Скопируйте ваш cron в какой-нибудь файл,
crontabl -l > filename
Теперь у filename
есть ваш cron, вы можете применить свой cron, используя
crontab filename
Комментарии начинаются с #, поэтому мы будем добавлять и удалять #в начале строки.
Чтобы добавлять и удалять комментарии, вы можете использоватьsed
Удалить комментарии(#)
sed -i -e 's/^# //g' filename
Добавить комментарии(#)
sed -i -e 's/^/# /g' filename
Применить cron с помощью
crontab filename
Проверьте хрон
crontab -l
Happy Scripting
Старый пост, но я думаю, что есть гораздо более быстрое и простое решение:
В Linux все является файлом.Crontab хранит cron каждого пользователя в /var/spool/cron/
Так что вы можете просто:
# comment
sed -i 's/^/#/' /var/spool/cron/<user>
# uncomment
sed -i 's/^#//' /var/spool/cron/<user>