在sed使用变量的一个应用实例

来源:互联网 发布:php 过滤非utf8字符 编辑:程序博客网 时间:2024/06/05 16:14

背景说明

应用场景:将一个文件的指定行抽取出来,和另一个文件的指定行组成一个新文件,解决问题的关键是使用sed,将指定的行数设为变量进行抽取

具体代码

#!/bin/sh
numnode=`cat nodeip.txt|wc -l`
numpcapfile=`cat listpcapfile.txt|wc -l`
#echo "The number of datanode is $numnode"
#echo "The number of pcap files is $numpcapfile"
if [ $numnode -ge $numpcapfile ];then
for((i=1;i<=numpcapfile;i=i+1))
do
echo -n `sed -n "${i}p" nodeip.txt`
echo -n " "
echo `sed -n "${i}p" listpcapfile.txt`
done
else
for((i=1;i<=numpcapfile;i=i+1))
do 
let "j=i%numnode"
let "j=j+1"

echo -n `sed -n "${j}p" nodeip.txt`
echo -n " "
echo `sed -n "${i}p" listpcapfile.txt`
done
fi 
这其中nodeip.txt的内容为
$ cat nodeip.txt 
192.168.104.11
192.168.104.12
192.168.104.13
192.168.104.14
192.168.104.15
192.168.104.16
192.168.104.17
192.168.104.18
192.168.104.19

listpcapfile.txt的内容为
$cat listpcapfile.txt 
/pcapfile/1.pacp
/pcapfile/2.pacp
/pcapfile/3.pacp
/pcapfile/4.pacp
/pcapfile/5.pacp
/pcapfile/6.pacp
/pcapfile/8.pacp
/pcapfile/9.pacp
/pcapfile/a.pacp
/pcapfile/b.pacp


运行的结果是
192.168.104.12 /pcapfile/1.pacp
192.168.104.13 /pcapfile/2.pacp
192.168.104.14 /pcapfile/3.pacp
192.168.104.15 /pcapfile/4.pacp
192.168.104.16 /pcapfile/5.pacp
192.168.104.17 /pcapfile/6.pacp
192.168.104.18 /pcapfile/7.pacp
192.168.104.19 /pcapfile/8.pacp
192.168.104.11 /pcapfile/9.pacp
192.168.104.12 /pcapfile/a.pacp

说明

本例中只是平均对应而已,在sed中使用变量,同理指可以改变变量,实现指定行数的输出