awk和sed并用实现替换每行首字符
时间:2014-11-30 15:08 来源:linux.it.net.cn 作者:IT
通过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
(责任编辑:IT)
通过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 |