我的目标是为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'