日期:2014-05-16  浏览次数:20670 次

shell编程问题
在linux系统中有一文件如下:
192.168.7.54
192.168.7.57
192.168.2.121
192.168.2.122
192.168.7.1
192.168.7.98
.................
共有121行
请问怎么使用shell脚本把这121行IP全部插入另一文件的奇数行里面(既在1,3,5,7........行之前插入上面的一个IP,直到121行全部插入完毕)

------解决方案--------------------
Python code
$ cat ip_file 
192.168.7.54
192.168.7.57
192.168.2.121
192.168.2.122
192.168.7.1
192.168.7.98
$ cat dest_file 
1
2
3
4
5
6
7
8
9
10
11
12
13
$ awk '{if(NR%2){getline tmp < "ip_file";print tmp"\n"$0}else print $0}' dest_file 
192.168.7.54
1
2
192.168.7.57
3
4
192.168.2.121
5
6
192.168.2.122
7
8
192.168.7.1
9
10
192.168.7.98
11
12
192.168.7.98
13

------解决方案--------------------
探讨
最后的192.168.7.98 输出了两次

参考楼上的改了下
awk '{if(NR==FNR)a[i++]=$0; else if(FNR%2 &amp;&amp; j<i) print a[j++]"\n"$0; else print $0}' ip.txt dest.txt

------解决方案--------------------
哦,我也是边学边用

awk 中有两个变量NR、FNR

单个awk 命令行可以处理多个文件
NR 表示awk已处理的行数
FNR 以每个文件为单位,表示文件中的行数

执行这个命令体会一下
awk '{print NR,FNR}' file1 file2
------解决方案--------------------
探讨
哦,我也是边学边用

awk 中有两个变量NR、FNR

单个awk 命令行可以处理多个文件
NR 表示awk已处理的行数
FNR 以每个文件为单位,表示文件中的行数

执行这个命令体会一下
awk '{print NR,FNR}' file1 file2

------解决方案--------------------
探讨

引用:
哦,我也是边学边用

awk 中有两个变量NR、FNR

单个awk 命令行可以处理多个文件
NR 表示awk已处理的行数
FNR 以每个文件为单位,表示文件中的行数

执行这个命令体会一下
awk '{print NR,FNR}' file1 file2

谢谢你

a[i++]=$0

这个看不懂

$0不是程序的名字……