Как удалить строки NONREF и RETURN из моего вывода CSV - PullRequest
1 голос
/ 07 ноября 2019

У меня есть CSV-файл, который содержит строки, в которых есть NONREF и RETURN, строки NONREF уже удалены, просто нужно помочь удалить строки RETURN.

Вот так выглядит CSV-файл ниже:

806185341,1395290,29/10/2019,USD,-1743.01
806185341,190944,29/10/2019,USD,-386.75
806185341,NONREF,29/10/2019,USD,21351.47
806185341,NONREF,30/10/2019,USD,-691430.16
806185341,1395043,30/10/2019,USD,-1021.72 
806185341,RETURN,4/10/2019,USD,12.98

Код:

awk -v s1="      " '
     BEGIN{
     FS=","
      }
      {
      gsub(/\r/,"")
    }
    FNR==1{
      print
     next
     }
      $2!~/NONREF/{
      $1=substr($1,1,3)"-"substr($1,4,5)"-"substr($1,length($1))
       $2=sprintf("%010d",$2)
       split($3,array,"/")  
      $3=sprintf("%02d%02d%s",array[2],array[1],substr(array[3],3))
      if($NF~/\.[0-9]$/){
       $NF=$NF"0"
       }
       gsub(/^-|\./,"",$NF)
     $NF=sprintf("%012d",$NF)
      $3=$3 $NF
      print $1 s1 $2,$3
       }
      '  Input_file

Ожидаемый результат:

806-18534-1      0001395994 103119000000058658
806-18534-1      0001396080 103119000000115483
806-18534-1      0001395958 103119000000076487
806-18534-1      0001395893 103119000000098132

Ответы [ 2 ]

2 голосов
/ 07 ноября 2019

Вы должны игнорировать 2 строки в коде, в этом случае попробуйте.

awk -v s1="      " '
BEGIN{
  FS=","
}
{
  gsub(/\r/,"")
}
$2!~/NONREF/ && $2 !~ /RETURN/{
  $1=substr($1,1,3)"-"substr($1,4,5)"-"substr($1,length($1))
  $2=sprintf("%010d",$2)
  split($3,array,"/")  
  $3=sprintf("%02d%02d%s",array[2],array[1],substr(array[3],3))
  if($NF~/\.[0-9]$/){
    $NF=$NF"0"
  }
  gsub(/^-|\./,"",$NF)
  $NF=sprintf("%012d",$NF)
  $3=$3 $NF
  print $1 s1 $2,$3
}
'  Input_file

Следует отметить несколько моментов:

  • Постарайтесь сохранить отступ кода таким же, как вы его получили, иначе очень трудно понять код.
  • Я удалил FNR==1 часть из вашего кода, так как у вас нет заголовка в вашемобразцы, если у вас есть, добавьте его тогда.
1 голос
/ 07 ноября 2019

Вы также можете добавить grep в конце, например:

... | grep -v "NONRETURN" | grep -v "NOREF"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...