d******e 发帖数: 143 | 1 请教个SED的用法
我有一些LOG文件,每一行的格式是一样的
我要把第5个field作一下运算再附在一起,如下
turn lines like this:
E,1204905442,3006,238,83888208,126586,N,0059221,T,K
into:
E,1204905442,3006,238,83888208[2128],126586,N,0059221,T,K
我感觉应该用这些shell,sed之类的应该挺容易的,可是写出来发现要用sed两次,很郁闷
不知道如何对匹配的部分直接运算一下
for s in $(cat $1)
do
errcode=$(echo $s | sed 's/E,[0-9]*,[0-9]*,[0-9]*,\([0-9]*\),.*/\1/')
errcode=$(($errcode % 65536))
echo $s | sed 's/\(E,[0-9]*,[0-9]*,[0-9]*,\)\([0-9]*\)\(,.*\)/\1\2['$errcode
']\3/'
done
多谢 | w******p 发帖数: 166 | 2 use awk:
$ echo E,1204905442,3006,238,83888208,126586,N,0059221,T,K | awk -F\, 'BEGIN
{OFS=","}{$5=$5"["(""+$5 % 65536)"]";print $0}'
E,1204905442,3006,238,83888208[2128],126586,N,0059221,T,K | d******e 发帖数: 143 | 3 原来可以用awk
好像awk比sed要powerful
thanks!
BEGIN
【在 w******p 的大作中提到】 : use awk: : $ echo E,1204905442,3006,238,83888208,126586,N,0059221,T,K | awk -F\, 'BEGIN : {OFS=","}{$5=$5"["(""+$5 % 65536)"]";print $0}' : E,1204905442,3006,238,83888208[2128],126586,N,0059221,T,K
|
|