我有函数“backup”,控制台中该函数的输出也被重定向到一个文件,具体操作如下:
backup > >(tee -a ./log.txt) 2>&1
它工作,但我想添加新的输出数据到一个文件的开头,看起来像我的情况明智地使用ed(而不是sed),我这样做的方式:
ed
sed
ed -s log.txt < <(printf '%s\n' 1i "$(backup)" . wq)
在这个例子中,我不知道如何同时实现控制台和文件的输出(就像我的第一个例子中发生的那样)。
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
0s0u357o2#
在文件的每一行开头插入文本:
sed 's/^/MYTEXT /' path_to_file > path_to_file
在每个stdout行的开头插入文本:
COMMAND | sed 's/^/MYTEXT /'
2条答案
按热度按时间zrfyljdw1#
如果我没理解错你的代码的话--你试图把备份命令的输出前置到log.txt文件的开头,而且,你试图在控制台上看到备份输出。
试试看:
编辑:
下面是遵循Charles Duffy建议的代码版本:
0s0u357o2#
在文件的每一行开头插入文本:
在每个stdout行的开头插入文本: