awk或者sed识别和替换数据中最后一列的缺失值(转载)

###########################################################################

目标:

1,2,3,4,5,6,7,8,9,0,

替换成:

1,2,3,4,5,6,7,8,9,0,?

######################QQ群中的方案#####################################################

 

sed方案如下:

echo "1,2,3,4,5,6,7,8,9,0," | sed 's#$#?#'(最后一栏强制替换成"?")

echo "1,2,3,4,5,6,7,8,9,0" | sed 's#,$#,?#'(检测最后两栏是", "替换成",?")

 

 $表示文件最后一行

#是定界符

来自:

QQ群:302706076

中的大佬:

3456424

提供

########################CSDN论坛中的方案##################################################

sed -i 's/,$/,?/g' aaa.txt  这个直接修改目标文件,把以 , 结尾的替换为 ,?
sed -n 's/,$/,?/g;p' aaa.txt  修改后输出,不修改目标文件

这个方案和上面的类似,主要是把定界符换了一下

###########################################################################

awk方案如下:

$ cat data.txt

1,2,3,4,5,6,7,8,

1,2,3,4,5,6,7,8,9

1,2,3,4,5,6,7,8,9,10,

1,2,3,4,5,6,7,8,9,10,11

1,2,3,4,5,6,7,8,9,10,11,12,

1,2,3,4,5,6,7,8,9,10,11,12,13  

1,2,3,4,5,6,7,8,9,10,11,12,13,14,  

$ awk '{if ($0 ~ /,[ \t]*$/) {printf("%s?\n", $0)} else {print}}' data.txt

1,2,3,4,5,6,7,8,?

1,2,3,4,5,6,7,8,9

1,2,3,4,5,6,7,8,9,10,?

1,2,3,4,5,6,7,8,9,10,11

1,2,3,4,5,6,7,8,9,10,11,12,?

1,2,3,4,5,6,7,8,9,10,11,12,13  

1,2,3,4,5,6,7,8,9,10,11,12,13,14,  ?


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值