ваши данные в dat, используйте gnu sed;
$ sed -E 's/.*var1:\s(\S+).+var2:\s(\S+).*|.*var2:\s(\S+).+var1:\s(\S+).*/\1\4 \2\3/' dat
Вы можете указать команду в одинарных кавычках и передать ее в at
как есть:
echo 'echo "xyz" >> ~/testtest.txt' | at now + 1 minutes
В качестве альтернативы, если вы используете bash или другой скрипт, поддерживающий замену процесса , вы можете выполнить:
at now + 1 minutes < <(echo 'echo "xyz" >> ~/testtest.txt')
Это в основном передает имя файла в at
так же, как передает ему файл с командами.
Однако использование heredoc, как , предложенное Кусаланандой , должно быть более переносимым, поскольку оно не зависит от того, поддерживает ли ваша оболочка подстановку процессов.
Используйте здесь -документ, чтобы передать скрипт для последующего запуска в командной строке:
at now + 1 minute <<'END_AT'
echo 'xyz' >> ~/testtest.txt
END_AT
Документ здесь -цитируется (с использованием <<'END_AT'
вместо <<END_AT
), чтобы остановить текущую оболочку от расширения переменных и т. д. в тексте скрипта. Документ будет передан на at
при стандартном вводе.