1

我有一些包含 IP 地址的文件。我正在创建一个脚本,并且必须弄清楚如何使用基于之前创建的文件的 IP 地址创建一个新的用户文件。如果最后一个文件包含 ABCD 的 IP,则新文件需要是 ABC(D+4)。

我想我需要使用 'sed' 和 'awk' 命令,但无法让任何工作。我将如何编写这部分脚本?

4

1 回答 1

6

下面是一些可以帮助您入门的内容:假设有一个名为input如下所示的文件:

输入:内容input

127.0.0.1
127.0.0.2
127.0.0.3
127.0.0.200

您可以在 cmdline 上执行以下操作:

awk 'BEGIN{FS=OFS="."} {$4=$4+4; print}' input > output

在这里做什么的解释:

  • awk '...'- 调用awk,一个主要用于逐行操作文件的工具,单引号括起来的东西是awk的指令。
  • BEGIN{FS=OFS="."}- 告诉 awk.用作输入和输出的分隔符​​。FS代表“字段分隔符”
  • {$4=$4+4; print}-$4表示第 4 个字段。由于.是分隔符,D对应于第 4 个字段,我们将整数值添加4到第 4 个字段。这里print只是打印整条线的简写。
  • input- 将输入文件命名为 awk 的参数;救猫
  • > 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完全跳过该文件,只需在一行中完成所有操作:

awk 'BEGIN{FS=OFS="."} {$4=$4+4; print}' input | while read line; do echo "hello world" > "$line"; done
于 2013-01-02T22:40:23.393 回答