通过awk和sed实现用一个文本的行首字符替换掉另一个文本对应行的首字符。 如下例: 文本a和文本i,内容如下 # cat a 1,2,3 2,xx,yy 3,iii,oo # cat i 8 9 10 需求如下 实现用文本i的每行首字符(或是指定字符)替换掉文本a的每行首字符 替换后文本a效果如下 8,2,3 9,xx,yy 10,iii,oo 实现的代码如下 #!/bin/sh for i in $(seq 3) do q=`awk -v aa=$i -F , 'NR==aa{print $1}' a` qq=`awk -v aa=$i -F , 'NR==aa{print $1}' i` sed -i "s/^$q/$qq/g" a done 保存为test.sh 附加可执行权限并运行 # chmod +x test.sh && ./test.sh&& cat a 8,2,3 9,xx,yy 10,iii,oo |