> Linux教程 > linux基础 >

awk和sed并用实现替换每行首字符

通过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)