我有一些包含IP地址的文件。我正在创建一个脚本,并且必须弄清楚如何创建一个新的用户文件,其IP地址基于之前创建的文件。如果最后一个文件包含IP A.B.C.D,则新文件必须是A.B.C.(D + 4)。
我想我需要使用'sed'和'awk'命令,但是无法正常工作。我将如何编写脚本的这一部分?
答案 0 :(得分:6)
以下是让您入门的内容:假设有一个名为input
的文件如下所示:
输入:[{1}}
的内容input
您可以在cmdline上执行:
127.0.0.1
127.0.0.2
127.0.0.3
127.0.0.200
关于awk在这里做什么的解释:
awk 'BEGIN{FS=OFS="."} {$4=$4+4; print}' input > output
- 调用awk,一种主要用于逐行操作文件的工具,单引号括起来的东西是awk的说明。awk '...'
- 告诉awk使用BEGIN{FS=OFS="."}
作为输入和输出的分隔符。 .
代表“Field Separator”FS
- {$4=$4+4; print}
表示第4个字段。由于$4
是分隔符,.
对应于第4个字段,我们将整数值D
添加到第4个字段。这里的4
只是用于打印整行的简写。print
- 将输入文件命名为awk的参数;救一只猫input
- 将输出重定向到文件,以便在根据文件制作用户文件之前检查它们是否存在任何问题。 输出 > output
output
然后你可以一次读取127.0.0.5
127.0.0.6
127.0.0.7
127.0.0.204
一行来根据需要创建新的用户文件,也许是另一个脚本,其中包含以下内容:
output
(并根据您的需要调整)
最后,只要您了解上述内容,您就可以完全跳过while read line
do
echo "this is a user file" > "$line"
done < output
文件,只需在一行中完成:
output