Oracle 忽略中间空格,AWK 忽略前后中间空格不区分大小写精确匹配

该案例展示了如何利用Linux命令行工具,如sed和awk,来处理CSV文件,目的是筛选出不包含'Cancel'、'Stop'或'CancelBox'这些关键字的行。首先通过sed命令转换文件格式,然后使用awk以管道符号为分隔符,通过正则表达式不区分大小写地排除含有特定关键字的行,最终生成一个不含这些关键字的新文件。
摘要由CSDN通过智能技术生成

案例:查找文件中不是Cancel/Stop/Cancel BOX这几个关键字的列

要求:不区分大小写,忽略前后中间空格

文件格式:luosea # head aaaaaa201701-03.csv

8148827550,20170201000216,CANCEL BOX,,

8034541493,20170201000242,CANCLE,,

9034652099,20170201004106,ST0P,,

9069089216,20170201000126,cancle,,

7069659380,20170201005216,STOP,,

9037220900,20170201005230,STOP,,

8032453482,20170201005316,STOP,,

处理方法:

1、使用sed 转化文件,sed -i 's/,/|/1' aaaaaa201701-03.csv

sed -i 's/,/|/2' aaaaaa201701-03.csv

sed -i 's/,//g' aaaaaa201701-03.csv

转换后的文件格式:luosea #  head aaaaaa201701-03.csv

8148827550|20170201000216|CANCEL BOX

8034541493|20170201000242|CANCLE

9034652099|20170201004106|ST0P

9069089216|20170201000126|cancle

7069659380|20170201005216|STOP

9037220900|20170201005230|STOP

8032453482|20170201005316|STOP

8164895345|20170201005318|STOP

8105197779|20170201000015|Stop

8064349047|20170201001958|Stop stealin

习惯问题,将该文件重命名mv aaaaaa201701-03.csv luosea.txt

为避免格式不一致,将文件由dos格式转化为linux格式luosea # dos2unix luosea.txt

然后使用AWK 处理就行了awk -F "|" '$3 !~/^[[:blank:]]*[sS][tT][oO][pP][[:blank:]]*$/ && $3 !~/^[[:blank:]]*[cC][aA][nN][cC][eE][lL][[:blank:]]*$/ && $3 !~/^[[:blank:]]*[cC][aA][nN][cC][eE][lL][[:blank:]]*[bB][oO][xX][[:blank:]]*$/ {print $0}' luosea.txt > result.txt

解释下:

1、awk -F "|"  就是以"|" 作为分隔符

2、'$3 !~/^[[:blank:]]*[sS][tT][oO][pP][[:blank:]]*$/     !~表示不匹配,

3、^[[:blank:]]*开头存在或者不存在空格匹配,

4、[sS][tT][oO][pP]表示不区分大小写匹配stop,

5、[[:blank:]]*$表示忽略结尾的空格 ,再加上前面的不匹配,就是不区分大小写忽略空格不匹配stop 。

6、^ 表里开始字符  $ 结束字符 。  其他类似 。

最后得出结果就是去除关键字的了luosea # head result.txt

8034541493|20170201000242|CANCLE

9034652099|20170201004106|ST0P

9069089216|20170201000126|cancle

8064349047|20170201001958|Stop stealing

8106812512|20170201062023|Call me now.STOP

9069570059|20170201062541| Cancle Box

7063027423|20170201062956|STOP calle feel

8144895412|20170201064339|Cancil

7032251500|20170201065432|text CANCEL BOX

8106812512|20170201064517|Call me now.STOP

luosea #

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值