完成的功能:
有一个文件格式如下:
2401:b400:20::/48
2401:b400:21::/48
2001:250:4000::/48
2001:da8:8f00::/48
2001:250:3000::/48
使用空行分割成25部分,比如第一部分代表一个AS的前缀IP地址
另外一个文件:
BJ_Tsinghua
WuHan
GuangZhou
NanJing
一共25行,每一行对应文件1 中的一个部分,现在的需求是要在文件1中加入 这个前缀 达到效果如下:
2401:b400:20::/48 BJ_Tsinghua
2401:b400:21::/48 BJ_Tsinghua
2001:250:4000::/48 WuHan
2001:da8:8f00::/48 WuHan
2001:250:3000::/48 GuangZhou
我实现的方法是使用awk 的FS和RS。
首先使用RS=“” (以空行切分记录) 作为 读取记录的分隔符,那么awk 每次就会读入一个分块了,而不是默认的一行。FS 使用\n 这样就可以对读取的分块 按行划分。
代码如下所示:主要有两个参数,index 代表是第几个分块,prefix代表是相应的前缀;
ps: 我是越来越喜欢shell 脚本了。
function addPrefix(){
index=$1;
prefix=$2;
cat prefix.conf |awk -v pre=$prefix -v id=$index 'BEGIN{FS="\n";RS=""}(NR==id){for(i=1;i<=NF;i++){print $i"\t"pre}}'
}
i=1
while read line;
do
addPrefix $i $line
let i=i+1
echo -e "\n"
done < name.conf
相关推荐
在深入探讨AWK中FNR和NR,OFS和FS,RS和ORS这些核心概念之前,我们先简要回顾一下AWK的基本功能。AWK是一种强大的文本处理工具,主要用于模式扫描与处理语言,广泛应用于数据处理、报告生成、格式转换等场景。其核心...
### Linux中AWK内建变量FS、NF、NR、RT、RS、ORS、OFS详解 #### 一、概述 AWK是一种强大的文本处理工具,主要用于格式化文本数据,广泛应用于Linux/Unix环境中。它拥有丰富的内置变量和函数,使得用户能够方便地...
在awk编程语言中,RS(Record Separator)、ORS(Output Record Separator)、FS(Field Separator)和OFS(Output Field Separator)是四个重要的变量,它们分别用于处理输入和输出的数据分割。以下是对这些变量的...
awk的内建变量如RS(记录分隔符)和FS(字段分隔符)对于理解数据处理至关重要。 通过深入学习awk,读者不仅可以熟练掌握awk语言,还能提升抽象思维能力,不再局限于具体细节,从而更高效地解决复杂问题。因此,...
- `RS`:记录分隔符,默认为换行符。 - `RSTART`:匹配起始位置,当使用match函数时有效。 - `SUBSEP`:子字段分隔符,默认为`\034`。 #### 五、awk运算符 awk支持多种运算符,包括算术运算符、赋值运算符、比较...
内置变量包括 NR、NF、FS、RS 等,它们分别表示记录号、字段数、字段分隔符和记录分隔符。用户定义变量可以使用赋值语句来定义。 awk 的函数 awk 有多种函数,包括数学函数、字符串函数、时间函数等。数学函数包括...
- **字段分隔符**: Awk使用内置变量FS(Field Separator)来确定字段的分隔符,默认为空格和制表符。 - **记录分隔符**: RS(Record Separator)用来指定记录的分隔符,默认为换行符。 ### 5. 格式化输出 Awk提供...
视频教程可能还会涉及一些高级主题,如数组的使用、多行模式匹配、重定义字段分隔符、自定义记录分离符(RS)和字段分离符(FS),以及如何编写可读性好、易于维护的`awk`脚本。 通过`18.-.Awk[www.TopSage.com]....
FS - The Input Field Separator Variable OFS - The Output Field Separator Variable NF - The Number of Fields Variable NR - The Number of Records Variable RS - The Record Separator Variable ORS - ...
awk程序的运行涉及到几个核心概念,比如字段分隔符(FS)、记录分隔符(RS)、字段变量($1、$2、...、$NF)等。字段变量表示输入数据的各个字段,其中$1是第一个字段,$NF是最后一个字段,NF是字段的总数。awk提供...
### Linux Awk 学习指南 #### 1. Awk 简介 Awk 是一种专门设计用于处理文本和数据的编程语言,主要用于 Linux/Unix 操作系统中。它可以处理来自标准输入、一个或多个文件,甚至是其他命令的输出结果。Awk 支持高级...
awk的内置变量,如FS和OFS分别代表输入和输出的字段分隔符,NF和NR分别代表当前输入行中的字段数量和记录数量,RS和ORS分别是输入和输出的记录分隔符。 在执行awk脚本时,一般需要指定一个shell环境。awk支持多种...
awk 'BEGIN {FS="[: \t|]"} {print $1,$2,$3}' file 通过设置输入分隔符(FS="[: \t|]")修改输入分隔符。 示例 5:从文件中读取awk命令 awk -f awkfile file 通过文件 awkfile 的内容依次进行控制。 示例 6:...
* split(s, a, fs):把 s 用 fs 分割,显示在 a 数组里 * sprint(fmt, exp):返回经 fmt 格式化的 exp awk 的函数 awk 还提供了多种函数,用于实现复杂的数据处理和分析。这些函数包括: * printf(fmt, exp):...
awk提供了一些内置的环境变量,如`NR`(已读取的记录数)、`NF`(当前记录的域数)、`FS`(字段分隔符,默认为空格或制表符)等,这些变量可以帮助我们处理数据。 5. **awk 运算符** awk支持多种运算符,包括比较...
- **FS**: 输入字段分隔符,默认为空格或制表符。 - **RS**: 记录分隔符,默认为换行符。 - **NF**: 当前行中的字段数量。 - **NR**: 已经读取的行数。 - **OFS**: 输出字段分隔符,默认为空格。 - **ORS**: 输出...