【发布时间】:2014-02-18 11:39:16
【问题描述】:
我有很多文本文件,需要根据每个文件上的数据在每个文件上放置一个标题。
这个 awk 命令完成了任务:
awk 'NR==1{first=$1}{sum+=$1;}END{last=$1;print NR,last,"L";}' my_text.file
但这会将其打印在屏幕上,我想将此输出放在每个文件的标题中,并使用相同的文件名保存修改。
这是我尝试过的:
for i in *.txt
do
echo Processing ${i}
cat awk 'NR==1{first=$1}{sum+=$1;}END{last=$1;print NR,last,"L";}' "${i}" ${i} > $$.tmp && mv $$.tmp "${i}"
done
所以我想我不能使用 cat 将它们作为标题,还是我做错了什么?
提前致谢
【问题讨论】:
-
使用
perl和-i标志可能更简单! -
尝试将第 4 行替换为:
awk 'NR==1{first=$1}{sum+=$1;}END{last=$1;print NR,last,"L";}' < "${i}"(鞭打cat) -
@JM88 得到答案了吗?