awk的内建函数split允许你把一个字符串分隔为单词并存储在数组中。你可以自己定义域分隔符或者使用现在FS(域分隔符)的值。
格式:
split (string, array) -->如果第三个参数没有提供,awk就默认使用当前FS值。
例子:
例1:替换分隔符
1
2
3
|
time= "12:34:56"
out=`echo $time | awk '{split($0,a,":");print a[1],a[2],a[3]}' `
echo $out
|
例2:计算指定范围内的和(计算每个人1月份的工资之和)
1
2
3
4
5
6
7
8
9
10
|
[root @test ~] # cat test.txt
Tom 2012 - 12 - 11 car 53000
John 2013 - 01 - 13 bike 41000
vivi 2013 - 01 - 18 car 42800
Tom 2013 - 01 - 20 car 32500
John 2013 - 01 - 28 bike 63500
[root @test ~] # awk '{split($2,a,"-");if(a[2]==01){b[$1]+=$4}}END{for(i in b)print i,b[i]}' test.txt
vivi 2800
Tom2500 John4500 |
二、substr 截取字符串
返回从起始位置起,指定长度之子字符串;若未指定长度,则返回从起始位置到字符串末尾的子字符串。格式:
substr(s,p) 返回字符串s中从p开始的后缀部分
substr(s,p,n) 返回字符串s中从p开始长度为n的后缀部分
例子:
1
2
|
[root @test ~] # echo "123" | awk '{print substr($0,1,1)}'
1 |
解释:
awk -F ',' '{print substr($3,6)}' ---> 表示是从第3个字段里的第6个字符开始,一直到设定的分隔符","结束.substr($3,10,8) ---> 表示是从第3个字段里的第10个字符开始,截取8个字符结束.
substr($3,6) ---> 表示是从第3个字段里的第6个字符开始,一直到结尾
三、length 字符串长度
length函数返回没有参数的字符串的长度。length函数返回整个记录中的字符数。
1
2
|
[root @test ~] # echo "123" | awk '{print length}'
3 |
四、gsub函数
gsub函数则使得在所有正则表达式被匹配的时候都发生替换。gsub(regular expression, subsitution string, target string);简称 gsub(r,s,t)。
举例:把一个文件里面所有包含 abc 的行里面的 abc 替换成 def,然后输出第一列和第三列
1
|
awk '$0 ~ /abc/ {gsub("abc", "def", $0); print $1, $3}' abc.txt
|
五、正则表达式
+ | 指定如果一个或多个字符或扩展正则表达式的具体值(在 +(加号)前)在这个字符串中,则字符串匹配。命令行:
awk '/smith+ern/' testfile 将包含字符 smit,后跟一个或多个 h 字符,并以字符 ern 结束的字符串的任何记录打印至标准输出。此示例中的输出是: smithern, harry smithhern, anne |
? | 指定如果零个或一个字符或扩展正则表达式的具体值(在 ?(问号)之前)在字符串中,则字符串匹配。命令行:
awk '/smith?/' testfile 将包含字符 smit,后跟零个或一个 h 字符的实例的所有记录打印至标准输出。此示例中的输出是: smith, alan smithern, harry smithhern, anne smitters, alexis |
| | 指定如果以 |(垂直线)隔开的字符串的任何一个在字符串中,则字符串匹配。命令行:
awk '/allen | alan /' testfile 将包含字符串 allen 或 alan 的所有记录打印至标准输出。此示例中的输出是: smiley, allen smith, alan |
( ) | 在正则表达式中将字符串组合在一起。命令行:
awk '/a(ll)?(nn)?e/' testfile 将具有字符串 ae 或 alle 或 anne 或 allnne 的所有记录打印至标准输出。此示例中的输出是: smiley, allen smithhern, anne |
{m} | 指定如果正好有 m 个模式的具体值位于字符串中,则字符串匹配。命令行:
awk '/l{2}/' testfile 打印至标准输出 smiley, allen |
{m,} | 指定如果至少 m 个模式的具体值在字符串中,则字符串匹配。命令行:
awk '/t{2,}/' testfile 打印至标准输出: smitters, alexis |
{m, n} | 指定如果 m 和 n 之间(包含的 m 和 n)个模式的具体值在字符串中(其中m<= n),则字符串匹配。命令行:
awk '/er{1, 2}/' testfile 打印至标准输出: smithern, harry smithern, anne smitters, alexis |
[String] | 指定正则表达式与方括号内 String 变量指定的任何字符匹配。命令行:
awk '/sm[a-h]/' testfile 将具有 sm 后跟以字母顺序从 a 到 h 排列的任何字符的所有记录打印至标准输出。此示例的输出是: smawley, andy |
[^ String] | 在 [ ](方括号)和在指定字符串开头的 ^ (插入记号) 指明正则表达式与方括号内的任何字符不匹配。这样,命令行:
awk '/sm[^a-h]/' testfile 打印至标准输出: smiley, allen smith, alan smithern, harry smithhern, anne smitters, alexis |
~,!~ | 表示指定变量与正则表达式匹配(代字号)或不匹配(代字号、感叹号)的条件语句。命令行:
awk '$1 ~ /n/' testfile 将第一个字段包含字符 n 的所有记录打印至标准输出。此示例中的输出是: smithern, harry smithhern, anne |
^ | 指定字段或记录的开头。命令行:
awk '$2 ~ /^h/' testfile 将把字符 h 作为第二个字段的第一个字符的所有记录打印至标准输出。此示例中的输出是: smithern, harry |
$ | 指定字段或记录的末尾。命令行:
awk '$2 ~ /y$/' testfile 将把字符 y 作为第二个字段的最后一个字符的所有记录打印至标准输出。此示例中的输出是: smawley, andy smithern, harry |
. (句号) | 表示除了在空白末尾的终端换行字符以外的任何一个字符。命令行:
awk '/a..e/' testfile 将具有以两个字符隔开的字符 a 和 e 的所有记录打印至标准输出。此示例中的输出是: smawley, andy smiley, allen smithhern, anne |
*(星号) | 表示零个或更多的任意字符。命令行:
awk '/a.*e/' testfile 将具有以零个或更多字符隔开的字符 a 和 e 的所有记录打印至标准输出。此示例中的输出是: smawley, andy smiley, allen smithhern, anne smitters, alexis |
\ (反斜杠) | 转义字符。当位于在扩展正则表达式中具有特殊含义的任何字符之前时,转义字符除去该字符的任何特殊含义。例如,命令行:
/a\/\// 将与模式 a // 匹配,因为反斜杠否定斜杠作为正则表达式定界符的通常含义。要将反斜杠本身指定为字符,则使用双反斜杠。有关反斜杠及其使用的更多信息,请参阅以下关于转义序列的内容。 |
举例:把一个文件里面所有包含 abc 的行里面的 abc 替换成 def,然后输出第一列和第三列
1
|
awk '$0 ~ /abc/ {gsub("abc", "def", $0); print $1, $3}' abc.txt
|
相关推荐
以上内容详细介绍了 Linux 下 AWK 的内置函数,包括算术函数和字符串函数。这些函数可以帮助开发者在进行文本处理时更加灵活高效。通过这些函数,我们可以轻松实现数据过滤、字符串操作等功能,从而提高工作效率。
awk内置函数还包括对字符串进行操作的功能,例如 substr、split、sub和gsub函数,分别用于获取子字符串、分割字符串到数组、字符串替换等。 使用awk时,模式匹配是一个非常重要的功能。模式可以是字符串或者正则...
awk还提供了许多内置的字符串函数,如`length(str)`返回字符串长度,`split(str, arr, fs)`根据分隔符fs将str分割成数组arr,`index(str1, str2)`返回str2在str1中的位置,`substr(str, pos[, len])`返回str从pos...
AWK提供了许多内置函数,如`length()`, `split()`, `substr()`, `index()`等,用于字符串处理和数学计算。同时,AWK支持关联数组,可以以任意字符串作为索引,方便处理复杂的数据结构。 ### 8. 表达式控制结构 AWK...
此外,awk 还提供了许多内置函数,如 `length()`、`split()` 和 `substr()`,用于处理字符串和数组。 awk 的命令行使用允许用户在一行中直接编写简单的 awk 脚本,这对于快速处理文本非常方便。例如,`echo 'Hello,...
同时,内置了许多函数,如`length()`计算字符串长度,`substr()`提取子字符串,`split()`分割字符串。 **7. BEGIN和END规则** `BEGIN`规则在处理任何记录之前执行,`END`规则在处理完所有记录后执行。它们常用于...
- **函数**:awk提供了内置的数学和字符串处理函数,如length()、split()、substr()等。 - **自定义函数**:可以创建用户自定义函数来复用代码。 ### 5. 在Windows中使用AWK 虽然awk是Unix/Linux下的标准工具,但...
在给定的文件信息中,我们探讨了AWK这一强大文本处理工具中的算数函数、字符串函数以及其他功能,包括时间函数。以下是对这些知识点的详细解释: ### 算数函数 1. **atan2(y,x)**:此函数计算坐标 (x,y) 的角度...
awk还提供了一些内建函数,如`length()`(返回字符串长度)、`split()`(将字符串分割成数组)和`substr()`(提取子字符串)等。 **8. 表达式和模式匹配** awk支持正则表达式,可以在模式中使用,进行更复杂的数据...
awk提供了一系列内置函数,如length()计算字符串长度,split()将字符串分割成数组,substr()提取子字符串,还有其他如printf()、sprintf()等。 6. **变量与数组** awk中的变量默认为全局,无需声明即可使用。数组...
AWK是一种强大的文本分析工具,尤其在Linux和Unix环境中广泛使用。它被设计用来处理结构化的数据,如CSV、TSV文件或者任何包含固定格式的数据流。AWK的名字来源于它的三位创始人——Alfred Aho、Peter Weinberger和...
5. **函数**:掌握AWK的内置函数,如length()、split()和substr(),以及如何自定义函数。 6. **文件操作**:学习如何读取和写入文件,以及如何处理多文件输入。 7. **流程控制**:掌握if-else语句、for循环、while...
- 常见的内置函数有 `length`, `substr`, `index`, `split` 等。 #### 数组 - 可以定义一维或二维数组。 - 使用下标访问数组元素。 #### 正则表达式 - AWK 支持简单的正则表达式,如 `^`, `$`, `.` 等。 - 用于...
* 字符串函数:awk 中有多种字符串函数,如 sub、gsub、index、substr、split、length、match 等,用于对字符串进行操作。 * 数学函数:awk 中有多种数学函数,如 atan2、cos、exp、int、log、rand、sin、sqrt 等,...
- AWK内置了多个函数,如`length()`, `substr()`, `split()`等,可以用于字符串操作和数学计算。 - 用户也可以自定义函数来扩展功能。 8. **文件输入输出** - 可以通过`<>`操作符直接读写文件,或者使用`getline...
- 内置函数如`length()`计算字符串长度,`split()`分割字符串,`substr()`获取子字符串等。 - 用户自定义函数可以增强awk的功能。 7. **示例** - 查找含有特定字符串的行:`awk '/pattern/' file` - 打印第一列...
6. **功能函数**:awk提供了丰富的内置函数,如`length()`计算字符串长度,`split()`分割字符串,`printf()`格式化输出,`substr()`提取子字符串等。 7. **条件操作**:awk中的条件控制结构包括`if`、`if-else`和`...
awk随机数生成器以及常用字符串函数包括index、length、split、substr等。特别是GAWK/NAWK的字符串函数,比如sub、gsub、match、以及变量RSTART和RLENGTH也被涵盖。 本手册是sed和awk学习者的宝贵资源,通过掌握...
- `awk` 提供了丰富的内置函数,支持数学运算和文本处理。 - **联系**: - 两者都是强大的文本处理工具,常用于自动化脚本编写。 - 都可以用于文本过滤和格式化输出。 - 在实际应用中,经常结合使用 `sed` 和 `...