在Bash中编辑文件

时间:2013-01-02 22:36:12

标签: bash awk

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

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

1 个答案:

答案 0 :(得分:6)

以下是让您入门的内容:假设有一个名为input的文件如下所示:

输入:[{1}}

的内容
input

您可以在cmdline上执行:

127.0.0.1
127.0.0.2
127.0.0.3
127.0.0.200
关于在这里做什么的

解释

  • 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