首页 > 解决方案 > Shell / Bash脚本来反转每隔一列中的文本?

问题描述

我目前正在尝试编写一个 bash/shell 脚本,该脚本从 .csv 中提取数据并反转每隔一列中的所有字符串值并输出到新的 csv。我有一个脚本可以抓取所有其他列,但我不确定如何反转这些列中的字符串。

awk 'BEGIN{FS=","} {s=$NF; 
   for (i=1; i<=NF; i+=2) 
   printf ("%s%c", $i, i + 2 <= NF ? "," : "\n") 
}' input.csv > output.csv

标签: bashshellawk

解决方案


awk救援!

$ seq 100 141 | pr -6ats, | 
  awk -F, 'function rev(x) {r=""; 
                            for(j=length(x);j;j--) r=r substr(x,j,1); 
                            return r}
           BEGIN {OFS=FS} 
                 {for(i=1;i<NF;i+=2) $i=rev($i)}1' 

001,101,201,103,401,105
601,107,801,109,011,111
211,113,411,115,611,117
811,119,021,121,221,123
421,125,621,127,821,129
031,131,231,133,431,135
631,137,831,139,041,141

推荐阅读