有效地为所有行和列添加前缀

我的目标是为从 SQL 查询返回的所有行和列添加前缀(同一列的所有行都应采用相同的前缀)。我目前的做法是

echo "$(<my_sql_query> | awk '$0="prefixA_"$0' | 
                         awk '$2="prefixB_"$2' |
                         awk '$3="prefixC_"$3' |
                         awk '$4="prefixD_"$4')"

上面的脚本正是我想要的,但我想知道是否有更快的方法。

回答

如果您愿意使用echo+awk解决方案来做,那么您可以在一个awk.

echo "$<my_sql-query>" |
awk '{$0="prefixA_"$0;$2="prefixB_"$2;$3="prefixC_"$3;$4="prefixD_"$4} 1'


编辑:在这里添加一个通用解决方案,通过它我们可以将字段编号及其各自的值传递给并且可以将其添加到字段中,公平警告没有对其进行太多测试,因为没有给出样本。

echo "$<my_sql-query>" | 
awk '
function addPrefix(fieldNumbers,fieldValues){
  num=split(fieldNumbers,arr1,"@")
  split(fieldValues,arr2,"@")
  for(i=1;i<=num;i++){
    $arr1[i]=arr2[i]$arr1[i]
  }
}
addPrefix("1@2@3@4","prefixA_@prefixB_@prefixC_@prefixD_")
1'


以上是有效地为所有行和列添加前缀的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>