我正在使用下面的代码,但输出错误。你能告诉我这里出了什么问题吗。
awk -F"|" -v OFS="|" '{
**if((substr($9,0,2)=="02") && ($11="INV")) {$2="SAP_OSR_INV_FEB"}**
if((substr($9,0,2)=="03") && ($11="INV")) {$2="SAP_OSR_INV_MAR"}
if((substr($9,0,2)=="04") && ($11="INV")) {$2="SAP_OSR_INV_APR"}
if((substr($9,0,2)=="05") && ($11="INV")) {$2="SAP_OSR_INV_MAY"}
if((substr($9,0,2)=="06") && ($11="INV")) {$2="SAP_OSR_INV_JUN"}
if((substr($9,0,2)=="07") && ($11="INV")) {$2="SAP_OSR_INV_JUL"}
if((substr($9,0,2)=="08") && ($11="INV")) {$2="SAP_OSR_INV_AUG"}
if((substr($9,0,2)=="09") && ($11="INV")) {$2="SAP_OSR_INV_SEP"}
if((substr($9,0,2)=="10") && ($11="INV")) {$2="SAP_OSR_INV_OCT"}
if((substr($9,0,2)=="11") && ($11="INV")) {$2="SAP_OSR_INV_NOV"}
if((substr($9,0,2)=="12") && ($11="INV")) {$2="SAP_OSR_INV_DEC"}
**if((substr($9,0,2)=="02") && ($12="EXPWT")) {$2="SAP_OSR_EXPORT_FEB"}**
if((substr($9,0,2)=="03") && ($12="EXPWT")) {$2="SAP_OSR_EXPORT_MAR"}
if((substr($9,0,2)=="04") && ($12="EXPWT")) {$2="SAP_OSR_EXPORT_APR"}
if((substr($9,0,2)=="05") && ($12="EXPWT")) {$2="SAP_OSR_EXPORT_MAY"}
if((substr($9,0,2)=="06") && ($12="EXPWT")) {$2="SAP_OSR_EXPORT_JUN"}
if((substr($9,0,2)=="07") && ($12="EXPWT")) {$2="SAP_OSR_EXPORT_JUL"}
if((substr($9,0,2)=="08") && ($12="EXPWT")) {$2="SAP_OSR_EXPORT_AUG"}
if((substr($9,0,2)=="09") && ($12="EXPWT")) {$2="SAP_OSR_EXPORT_SEP"}
if((substr($9,0,2)=="10") && ($12="EXPWT")) {$2="SAP_OSR_EXPORT_OCT"}
if((substr($9,0,2)=="11") && ($12="EXPWT")) {$2="SAP_OSR_EXPORT_NOV"}
if((substr($9,0,2)=="12") && ($12="EXPWT")) {$2="SAP_OSR_EXPORT_DEC"}
if((substr($9,0,2)=="02") && ($11="CR")) {$2="SAP_OSR_CR_FEB"}
if((substr($9,0,2)=="03") && ($11="CR")) {$2="SAP_OSR_CR_MAR"}
if((substr($9,0,2)=="04") && ($11="CR")) {$2="SAP_OSR_CR_APR"}
if((substr($9,0,2)=="05") && ($11="CR")) {$2="SAP_OSR_CR_MAY"}
if((substr($9,0,2)=="06") && ($11="CR")) {$2="SAP_OSR_CR_JUN"}
if((substr($9,0,2)=="07") && ($11="CR")) {$2="SAP_OSR_CR_JUL"}
if((substr($9,0,2)=="08") && ($11="CR")) {$2="SAP_OSR_CR_AUG"}
if((substr($9,0,2)=="09") && ($11="CR")) {$2="SAP_OSR_CR_SEP"}
if((substr($9,0,2)=="10") && ($11="CR")) {$2="SAP_OSR_CR_OCT"}
if((substr($9,0,2)=="11") && ($11="CR")) {$2="SAP_OSR_CR_NOV"}
if((substr($9,0,2)=="12") && ($12="CR")) {$2="SAP_OSR_CR_DEC"}
if((substr($9,0,2)=="02") && $12="CAN") {$2="SAP_OSR_CAN_FEB"}
if((substr($9,0,2)=="03") && $12="CAN") {$2="SAP_OSR_CAN_MAR"}
if((substr($9,0,2)=="04") && $12="CAN") {$2="SAP_OSR_CAN_APR"}
if((substr($9,0,2)=="05") && $12="CAN") {$2="SAP_OSR_CAN_MAY"}
if((substr($9,0,2)=="06") && $12="CAN") {$2="SAP_OSR_CAN_JUN"}
if((substr($9,0,2)=="07") && $12="CAN") {$2="SAP_OSR_CAN_JUL"}
if((substr($9,0,2)=="08") && $12="CAN") {$2="SAP_OSR_CAN_AUG"}
if((substr($9,0,2)=="09") && $12="CAN") {$2="SAP_OSR_CAN_SEP"}
if((substr($9,0,2)=="10") && $12="CAN") {$2="SAP_OSR_CAN_OCT"}
if((substr($9,0,2)=="11") && $12="CAN") {$2="SAP_OSR_CAN_NOV"}
if((substr($9,0,2)=="12") && $12="CAN") {$2="SAP_OSR_CAN_DEC"}}1' file1.txt > file2.txt
我希望根据第9栏的前两位数字以及第11栏和column12的值更新第2列的值基础。
输入文件:
SAP||||||||022018|08AAACT2438A1ZT|INV|EXPWT|262881626|2018-02-02||||10||||TVH -COCO - VAISHALI|1151040011|8|08|08||||||9984|EVD0|EVD COCO CDMA Material|||0.00|8.47|0.00|0.00|9.00|0.76|9.00|0.76|||||||||||1301312397||ZEVD|1210|262881626|||||0
SAP||||||||022018|08AAACT2438A1ZT|INV|EXPWT|262881627|2018-02-02||||10||||TVH -COCO - VAISHALI|1151040011|8|08|08||||||9984|EVD0|EVD COCO CDMA Material|||0.00|8.47|0.00|0.00|9.00|0.76|9.00|0.76|||||||||||1301312569||ZEVD|1210|262881627|||||0
SAP||||||||022018|08AAACT2438A1ZT|INV|TAX|262881628|2018-02-02||||10||||TVH -COCO - VAISHALI|1151040011|8|08|08||||||9984|EVD0|EVD COCO CDMA Material|||0.00|8.47|0.00|0.00|9.00|0.76|9.00|0.76|||||||||||1301312574||ZEVD|1210|262881628|||||0
当前错误的外挂。在第2栏中,获取错误的"SAP_OSR_CAN_FEB“和第11栏中的值以及第12栏中的值也被更新为"CR”和"CAN“,这两个词不应该像只更新第2列中的值那样更新。
SAP|**SAP_OSR_CAN_FEB**|||||||022018|08AAACT2438A1ZT|**CR**|**CAN**|262881626|2018-02-02||||10||||TVH -COCO - VAISHALI|1151040011|8|08|08||||||9984|EVD0|EVD COCO CDMA Material|||0.00|8.47|0.00|0.00|9.00|0.76|9.00|0.76|||||||||||1301312397||ZEVD|1210|262881626|||||0
SAP|**SAP_OSR_CAN_FEB**|||||||022018|08AAACT2438A1ZT|**CR**|**CAN**|262881627|2018-02-02||||10||||TVH -COCO - VAISHALI|1151040011|8|08|08||||||9984|EVD0|EVD COCO CDMA Material|||0.00|8.47|0.00|0.00|9.00|0.76|9.00|0.76|||||||||||1301312569||ZEVD|1210|262881627|||||0
SAP|**SAP_OSR_CAN_FEB**|||||||022018|08AAACT2438A1ZT|**CR**|**CAN**|262881628|2018-02-02||||10||||TVH -COCO - VAISHALI|1151040011|8|08|08||||||9984|EVD0|EVD COCO CDMA Material|||0.00|8.47|0.00|0.00|9.00|0.76|9.00|0.76|||||||||||1301312574||ZEVD|1210|262881628|||||0
预期正确产出:
SAP|SAP_OSR_EXPORT_FEB|||||||022018|08AAACT2438A1ZT|INV|EXPWT|262881626|2018-02-02||||10||||TVH -COCO - VAISHALI|1151040011|8|08|08||||||9984|EVD0|EVD COCO CDMA Material|||0.00|8.47|0.00|0.00|9.00|0.76|9.00|0.76|||||||||||1301312397||ZEVD|1210|262881626|||||0
SAP|SAP_OSR_EXPORT_FEB|||||||022018|08AAACT2438A1ZT|INV|EXPWT|262881627|2018-02-02||||10||||TVH -COCO - VAISHALI|1151040011|8|08|08||||||9984|EVD0|EVD COCO CDMA Material|||0.00|8.47|0.00|0.00|9.00|0.76|9.00|0.76|||||||||||1301312569||ZEVD|1210|262881627|||||0
SAP|SAP_OSR_INV_FEB|||||||022018|08AAACT2438A1ZT|INV|TAX|262881628|2018-02-02||||10||||TVH -COCO - VAISHALI|1151040011|8|08|08||||||9984|EVD0|EVD COCO CDMA Material|||0.00|8.47|0.00|0.00|9.00|0.76|9.00|0.76|||||||||||1301312574||ZEVD|1210|262881628|||||0
简言之,适用条件:
if ($11 ~ /^INV$) {$2="SAP_OSR_INV_FEB} append FEB if first two digit of column 9 is 02 or MAR at end in column 2 if first two digit of column 9 is 03
if ($12 ~ /^EXPWT$) {$2="SAP_OSR_EXPORTS_FEB} append FEB if first two digit of column 9 is 02 or MAR at end in column 2 if first two digit of column 9 is 03
if ($11 ~ /^CR$) {$2="SAP_OSR_CR_FEB} append FEB if first two digit of column 9 is 02 or MAR at end in column 2 if first two digit of column 9 is 03
if ($12 ~ /^CAN$) {$2="SAP_OSR_CAN_FEB} append FEB if first two digit of column 9 is 02 or MAR at end in column 2 if first two digit of column 9 is 03
发布于 2018-05-03 18:30:46
我的眼睛被那个剪贴程序烧焦了。
awk -F"|" -v OFS="|" '
BEGIN {
mon["01"] = "JAN"; mon["04"] = "APR"; mon["07"] = "JUL"; mon["10"] = "OCT"
mon["02"] = "FEB"; mon["05"] = "MAY"; mon["08"] = "AUG"; mon["11"] = "NOV"
mon["03"] = "MAR"; mon["06"] = "JUN"; mon["09"] = "SEP"; mon["12"] = "DEC"
}
# criteria
$11 == "INV" { val = $11 }
$12 == "EXPWT" { val = "EXPORT" }
$11 == "CR" { val = $11 }
$12 == "CAN" { val = $12 }
# apply rules
{ $2 = "SAP_OSR_" val "_" mon[substr($9,0,2)] }
1
' file
注意第11栏和第12栏检查的顺序:根据您的“简短”标准,
如果这些规则是不正确的,你必须对你的标准更加精确。
https://stackoverflow.com/questions/50160967
复制相似问题