【发布时间】:2017-02-14 14:55:25
【问题描述】:
我有一个逗号分隔的文件,如下所示
Start,Card,App,Description,Internet
2013-01-02 11:54:00,No Data,Off,Our system has No Data,Off
2013-01-03 05:30:00,Visa,On,The monitoring system is Off,Off
2013-01-05 17:07:00,Master,Off,The system is On,On
2013-01-07 00:08:00,No Data,No Data,No Data,On
2013-01-09 04:40:00,Master,Off,System is Off,On
我想用NA替换No Data,用0替换Off,用1替换On,只有当这些词是字段时,即它们有逗号或换行符开头或结尾的线。所需的输出是
Start,Card,App,Description,Internet
2013-01-02 11:54:00,NA,0,Our system has No Data,0
2013-01-03 05:30:00,Visa,1,The monitoring system is Off,0
2013-01-05 17:07:00,Master,0,The system is On,1
2013-01-07 00:08:00,NA,NA,NA,1
2013-01-09 04:40:00,Master,0,System is Off,1
例如,我试过了,
sed 's/,Off,/,0,/g' test.txt
仅当字段数大于 1 或小于最大字段数时才会替换。我还尝试使用环视并省略像
这样的标题sed '2,$s/(?<=^|,)Off(?=$|,)/0/g' test.txt
我认为第二个命令应该可以工作,但没有。我哪里做错了?感谢您的提示。由于该文件是 biggg,因此不能选择像 $4 这样的列的绝对索引。
【问题讨论】:
标签: regex unix awk replace sed