unix 在文件开头插入文本+ stdout,stderr

7kjnsjlb  于 2022-11-23  发布在  Unix
关注(0)|答案(2)|浏览(148)

我有函数“backup”,控制台中该函数的输出也被重定向到一个文件,具体操作如下:

backup > >(tee -a ./log.txt) 2>&1

它工作,但我想添加新的输出数据到一个文件的开头,看起来像我的情况明智地使用ed(而不是sed),我这样做的方式:

ed -s log.txt < <(printf '%s\n' 1i "$(backup)" . wq)

在这个例子中,我不知道如何同时实现控制台和文件的输出(就像我的第一个例子中发生的那样)。

zrfyljdw

zrfyljdw1#

如果我没理解错你的代码的话--你试图把备份命令的输出前置到log.txt文件的开头,而且,你试图在控制台上看到备份输出。
试试看:

{
  backup 2>&1 | tee /dev/tty
  cat log.txt
} > log.txt.new
mv log.txt.new log.txt

编辑:
下面是遵循Charles Duffy建议的代码版本:

cat <( backup 2>&1 | tee /dev/tty ) log.txt > log.txt.new && mv log.txt.new log.txt
0s0u357o

0s0u357o2#

在文件的每一行开头插入文本:

sed 's/^/MYTEXT /' path_to_file > path_to_file

在每个stdout行的开头插入文本:

COMMAND | sed 's/^/MYTEXT /'

相关问题