perl -pale 's#(?:\H+\h+){3}\K\H+#($F[3] =~ /(?:^|;)(Gene:[^:]+)/)[0]#e' input-file.txt
° в случае отсутствия фиксированного положения гена в четвертом поле можно поступить так, как указано выше.
° мы обнуляем четвертое поле с помощью регулярного выражения (?:\H+\h+){3}\K\H+
и быстро заменяем его другим регулярным выражением, используемым в подстановочной части команды s///e
.
Попробуйте использоватьsed
:
sed -i "1 i\
$(date)" test.txt
Формаman
:
i \
text Insert text, which has each embedded newline preceded by a backslash.
Чтобы записать дату в начало вместо конца file
, попробуйте:
{ date; cat file; } >file.new && mv file.new file
Добавление нового текста в начало файла требует перезаписи всего файла. Добавление нового текста в конец файла требует только написания нового текста.
Энди Далтон предложил просто добавить в конец файла, как обычно, а затем использовать tac file
для просмотра файла, это хороший вариант.
echo `date` >> test.txt
можно заменить более простым и эффективным date >> test.txt
.
Если вы используете bash 4.3 или более позднюю версию, то, как указывает Чарльз Даффи , printf '%(%c)T\n' -1 >>test.txt
еще более эффективен.
Пробелы вокруг фигурных скобок обязательны. Это связано с тем, что {
и }
являются зарезервированными словами оболочки (, в отличие от ключевых слов оболочки , которые не требуют пробелов ).
Обратный порядок строк
ex -s +%g/^/m0 +wq file
ex -s
режим редактора vim, эквивалентvim -nes
+wq
сохранить команду и выйти
или для баш
tac <<<$(<file) >file
<<<$(<file)
эта конструкция служит самодельным -буфером
Запись в первую строку
cat <<<$(date)$'\n'$(<file) >file
echo -e "$(date)\n$(<file)" >file
и
ex -s +'0r!date' +wq file
Извините, я сначала не понял