Я использую приведенный ниже код, но получаю неправильный вывод. Не могли бы вы, пожалуйста, дайте мне знать, что здесь не так.
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
Я хочу обновить значение столбца 2 на основе первых двух цифр столбца 9 и значения столбца 11 и столбца 12
Входной файл:
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