场景:shell的使用sed处理数据
1.示例数据:
cat t1.txt
|FLAG|AUTOCLAIM|CE_AUTOCHECK_RESULT|CREATED_DATE|DATE|7|N|创建时间|5|(null)|
|FLAG|AUTOCLAIM|CE_AUTOCHECK_RESULT|UPDATED_DATE|DATE|7|N|更新时间|6|(null)|
|FLAG|AUTOCLAIM|CE_AUTOCHECK_RESULT|STATUS|VARCHAR2|2|N|0:初始状态
1:红
2:黄
3:绿
4:检测失败
|7|(Null)|
|FLAG|AUTOCLAIM|CE_AUTOCHECK_RESULT|ERROR_MESSAGE|VARCHAR2|3000|Y|异常信息|8|(null)|
|FLAG|AUTOCLAIM|CE_AUTOCHECK_RESULT|ERROR_TIMES|NUMBER|22|Y|失败次数:当失败次数大于10次不允许再次自动检测
|9|(null)|
|FLAG|AUTOCLAIM|CE_AUTOCHECK_RESULT|SEND_DATE|DATE|7|Y|发送时间|10|(null)|
|FLAG|AUTOCLAIM|CE_AUTOCHECK_RESULT|CAR_NUMBER|VARCHAR2|80|Y|检测的车牌号|11|(null)|
|FLAG|AUTOCLAIM|CE_AUTOCHECK_RESULT|FRAUDRISKLEVEL|VARCHAR2|2|Y|欺诈风险评级|12|(null)|
|FLAG|AQQX_BD|AQ_CBLPGX|YXBZ|VARCHAR2|8|N|有效标志|8|ID|
|FLAG|AQQX_BD|AQ_CZDXXXB|ID|VARCHAR2|64|N|??|1|ID|
|FLAG|AQQX_BD|AQ_CZDXXXB|CZMC|VARCHAR2|400|Y|???|2|ID|
2.需要处理成以下的效果(删除异常的行,去掉每行开头的|FLAG|)
AUTOCLAIM|CE_AUTOCHECK_RESULT|CREATED_DATE|DATE|7|N|创建时间|5|(null)|
AUTOCLAIM|CE_AUTOCHECK_RESULT|UPDATED_DATE|DATE|7|N|更新时间|6|(null)|
AUTOCLAIM|CE_AUTOCHECK_RESULT|STATUS|VARCHAR2|2|N|0:初始状态
AUTOCLAIM|CE_AUTOCHECK_RESULT|ERROR_MESSAGE|VARCHAR2|3000|Y|异常信息|8|(null)|
AUTOCLAIM|CE_AUTOCHECK_RESULT|ERROR_TIMES|NUMBER|22|Y|失败次数:当失败次数大于10次不允许再次自动检测
AUTOCLAIM|CE_AUTOCHECK_RESULT|SEND_DATE|DATE|7|Y|发送时间|10|(null)|
AUTOCLAIM|CE_AUTOCHECK_RESULT|CAR_NUMBER|VARCHAR2|80|Y|检测的车牌号|11|(null)|
AUTOCLAIM|CE_AUTOCHECK_RESULT|FRAUDRISKLEVEL|VARCHAR2|2|Y|欺诈风险评级|12|(null)|
AQQX_BD|AQ_CBLPGX|YXBZ|VARCHAR2|8|N|有效标志|8|ID|
AQQX_BD|AQ_CZDXXXB|ID|VARCHAR2|64|N|??|1|ID|
AQQX_BD|AQ_CZDXXXB|CZMC|VARCHAR2|400|Y|???|2|ID|
3.使用sed处理
字符串测试
echo ‘|AUTOCLAIM|CE_AUTOCHECK_RESULT|ERROR_MESSAGE|VARCHAR2|3000|Y|异常信息|8|(null)|’ | sed -r ‘s#^|##g’
AUTOCLAIM|CE_AUTOCHECK_RESULT|ERROR_MESSAGE|VARCHAR2|3000|Y|异常信息|8|(null)|
处理文件
cat t1.txt | grep ‘|FLAG|’ | sed ‘s#|FLAG|##’
AUTOCLAIM|CE_AUTOCHECK_RESULT|CREATED_DATE|DATE|7|N|创建时间|5|(null)|
AUTOCLAIM|CE_AUTOCHECK_RESULT|UPDATED_DATE|DATE|7|N|更新时间|6|(null)|
AUTOCLAIM|CE_AUTOCHECK_RESULT|STATUS|VARCHAR2|2|N|0:初始状态
AUTOCLAIM|CE_AUTOCHECK_RESULT|ERROR_MESSAGE|VARCHAR2|3000|Y|异常信息|8|(null)|
AUTOCLAIM|CE_AUTOCHECK_RESULT|ERROR_TIMES|NUMBER|22|Y|失败次数:当失败次数大于10次不允许再次自动检测
AUTOCLAIM|CE_AUTOCHECK_RESULT|SEND_DATE|DATE|7|Y|发送时间|10|(null)|
AUTOCLAIM|CE_AUTOCHECK_RESULT|CAR_NUMBER|VARCHAR2|80|Y|检测的车牌号|11|(null)|
AUTOCLAIM|CE_AUTOCHECK_RESULT|FRAUDRISKLEVEL|VARCHAR2|2|Y|欺诈风险评级|12|(null)|
AQQX_BD|AQ_CBLPGX|YXBZ|VARCHAR2|8|N|有效标志|8|ID|
AQQX_BD|AQ_CZDXXXB|ID|VARCHAR2|64|N|??|1|ID|
AQQX_BD|AQ_CZDXXXB|CZMC|VARCHAR2|400|Y|???|2|ID|