我有一些包含IP地址的文件.我正在创建一个脚本,并且必须弄清楚如何创建一个新的用户文件,其IP地址基于之前创建的文件.如果最后一个文件包含IP ABCD,则新文件需要为ABC(D + 4).
我想我需要使用'sed'和'awk'命令,但是无法正常工作.我将如何编写脚本的这一部分?
这里有一些东西让你开始:假设有一个名为inputlook 的文件:
输入:内容input
127.0.0.1
127.0.0.2
127.0.0.3
127.0.0.200
Run Code Online (Sandbox Code Playgroud)
你可以在cmdline上做:
awk 'BEGIN{FS=OFS="."} {$4=$4+4; print}' input > output
Run Code Online (Sandbox Code Playgroud)
关于awk在这里做什么的解释:
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
Run Code Online (Sandbox Code Playgroud)
然后,您可以output根据需要一次读取一行来创建新的用户文件,也许是另一个脚本,其中包含以下内容:
while read line
do
echo "this is a user file" > "$line"
done < output
Run Code Online (Sandbox Code Playgroud)
(并根据您的需要调整)
最后,只要您了解上面的内容,您就可以output完全跳过该文件,只需在一行中完成:
awk 'BEGIN{FS=OFS="."} {$4=$4+4; print}' input | while read line; do echo "hello world" > "$line"; done
Run Code Online (Sandbox Code Playgroud)