如何从下面的下一行复制值

Jim*_*Jim 0 arrays bash perl awk sed

我正在研究Sed或Awk来解决这个问题,但我完全迷失了.没有起点.我有一堆文件,所以我想使用delimiter(,)并使用索引/数组来复制一个值并替换另一个索引/数组.

0001,324434344,Sterner,Erik B,B.A,1987
0002,324434344,Sterner,Erik B,M.A,2001,Columbia University
Run Code Online (Sandbox Code Playgroud)

因为array [6]在第一行是空的.我想将数组[6]从第二行复制到第一行.我很清楚如何查看文件并确定数组[6]是空的但是,我只是不知道如何复制第二行数组[6]并替换它之前的行.任何提示?结果应该是:

0001,324434344,Sterner,Erik B,B.A,1987,Columbia University
0002,324434344,Sterner,Erik B,M.A,2001,Columbia University
Run Code Online (Sandbox Code Playgroud)

mwp*_*mwp 6

扭转线条!然后,存储第六个字段的最新非空值并在找到空白值时插入它应该是微不足道的.完成后再次反转线条.

tac file.csv | perl -F, -alne '
  $last = $F[6] if $F[6]; 
  $F[6] ||= $last if $last; 
  print join ",", @F;
' | tac
Run Code Online (Sandbox Code Playgroud)

你可以使用tail -r而不是tac你使用BSD衍生物.