先说下简单的方法:
这个需求可以分为两种:
1、在文本的每行开头都加上一个字段(日期、时间、或者其它),但是这个是固定的,不会发生变化
2、在文本的每行开头都加上一个字段(例如当天的时间),那么这个时间就是变化的,每天的时间都不一样。
对于需求1可以用下面两个命令:
awk '{print "20200323 " $0}' test.file
sed 's/^/20200309& /g' test.file
看下效果:
可以看到在前面都能加上自己的日期了,同理,需要加其它的就替换成其它字段就好了。
但是这个awk和sed命令有个缺陷,就是这个在开头加上字段是固定的,无法获取变量。如下:
#!/bin/bash
tmp=`date +"%Y%m%d"`
echo $tmp
awk '{print "$tmp " $0}' test.file
可以看到是没办法获取tmp参数的,sed命令也是一样。如果有人有办法直接在awk和sed命令里面获取变量,请告知一下,感激!
对于需求2可以用下面的方法:
方法:先把每行文本提取出来,当成一个变量,然后再重新和其它变量组合输出。
#!/bin/bash
day_time=`date +%Y%m%d`
filepath=./test.file
if [ -e file ];then
rm file -f
fi
cat $filepath | while read line
do
echo "$day_time $line" >> file
done
可以看到day_time是获取当天时间,不再手动输入。