SHELL 在文本的每行开头都加上一个日期

先说下简单的方法:
这个需求可以分为两种:
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是获取当天时间,不再手动输入。
在这里插入图片描述

shell 在文本的每行开头都加上一个日期 - 灰信网(软件开发博客聚合) (freesion.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值