Chinaunix
标题:
shell替换字符串
[打印本页]
作者:
lilyok12345
时间:
2014-10-16 23:34
标题:
shell替换字符串
我有一个文本
类似
8613302200008,460030902234084,1201,12,600101,2002-03-19 12:00:00,2013-06-29 22:00:50
8613302200009,460030918855095,1001,12,600101,2010-12-30 18:06:51,2011-09-12 05:30:21
我想替换第三列的值,如果是1201则替换成15 ,如果是1001则替换成10,这个应该怎么写?
谢谢~
作者:
reb00t
时间:
2014-10-17 00:17
本帖最后由 reb00t 于 2014-10-17 00:17 编辑
awk -F ',' -vOFS=',' '$3==1201{$3=15}$3==1001{$3=10}1' file
复制代码
作者:
yestreenstars
时间:
2014-10-17 09:14
awk 'BEGIN{FS=OFS=","}$3==1201{$3=15}$3==1001{$3=10}1'
复制代码
作者:
聆雨淋夜
时间:
2014-10-17 10:58
回复
3#
yestreenstars
awk -F, '$3==1201{$3=15}$3==1001{$3=10}1' 1.txt
我不清楚为什么也要设置OFS,帮忙解释一下哈
作者:
yestreenstars
时间:
2014-10-17 11:30
回复
4#
聆雨淋夜
如果不修改的话最后会以空格来分隔字段~{:3_193:}
作者:
刺客阿地
时间:
2014-10-17 11:45
路过,学习一下。
作者:
可恶的
时间:
2014-10-17 13:04
sed -r 's/(([0-9]+,){2})1201/\115/;s/(([0-9]+,){2})1001/\110/' filename
复制代码
不得不说,列的处理还是awk方便
作者:
jason680
时间:
2014-10-17 14:09
回复
1#
lilyok12345
define the changed value in ch3.txt by yourself
$ cat ch3.txt
1201,15
1001,10
$ cat FILE
8613302200008,460030902234084,1201,12,600101,2002-03-19 12:00:00,2013-06-29 22:00:50
8613302200009,460030918855095,1001,12,600101,2010-12-30 18:06:51,2011-09-12 05:30:21
$ awk 'BEGIN{FS=OFS=","}NR==FNR{a[$1]=$2;next}{if(a[$3]!="")$3=a[$3]}1' ch3.txt FILE
8613302200008,460030902234084,15,12,600101,2002-03-19 12:00:00,2013-06-29 22:00:50
8613302200009,460030918855095,10,12,600101,2010-12-30 18:06:51,2011-09-12 05:30:21
作者:
yestreenstars
时间:
2014-10-17 14:29
回复
8#
jason680
不走寻常路啊~{:3_193:}
作者:
jason680
时间:
2014-10-17 15:17
回复
9#
yestreenstars
这才是寻常路
只为了改两个就来写脚本程序...!!??
作者:
yestreenstars
时间:
2014-10-17 15:28
回复
10#
jason680
{:3_201:}
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2