标签:字符串
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
一个完整的 awk 语句为:Awk ‘[patten]{action}……’, 其中 pattern 缺省为 1,action 缺省为
{print}。
那么awk ‘1’完整的写法就是awk ‘1{print}’; 同理, awk ‘{print}’完整的写法也是awk ‘1{print}’。
awk ‘! a[$0]++’ 怎么理解?
这是一个非常经典的去重复项的 awk 语句
awk 命令
用途
在文件中查找与模式匹配的行,然后在它们上面执行特定的操作。
语法
awk [ -F Ere ] [ -v Assignment ] ... { -f ProgramFile | ‘Program‘ } [ [ File ...
| Assignment ... ] ] ...
在 awk 命令语言语法中使用四种类型的模式:
正则表达式
关系表达式
模式的组合
BEGIN 和 END 模式
length( 字符串 ) : 传回该字符串的长度.
[root@localhost ~]# awk ‘BEGIN {print length ("qiruyi")}‘
6
输入以下一行命令:
awk ‘/smi/‘ testfile
将把包含 smi 字符串的具体值的所有记录打印至标准输出。
命令行:
awk ‘/smith+ern/‘ testfile
将包含字符 smit,后跟一个或多个 h 字符,并以字符 ern 结束的字符串的任何记录打印至标准输出
|指定如果以 |(垂直线)隔开的字符串的任何一个在字符串中,则字符串匹配。命令行:
awk ‘/allen |alan /‘ testfile
将包含字符串 allen 或 alan 的所有记录打印至标准输出。此示例中的输出是:
smiley, allen
smith, alan
{m,}指定如果至少 m 个模式的具体值在字符串中,则字符串匹配。命令行:
awk ‘/t{2,}/‘ testfile
打印至标准输出:
smitters, alexis
[String]指定正则表达式与方括号内 String 变量指定的任何字符匹配。命令行:
awk ‘/sm[a-h]/‘ testfile
将具有 sm 后跟以字母顺序从 a 到 h 排列的任何字符的所有记录打印至标准输出。此示例的输出是:
smawley, andy
^指定字段或记录的开头。命令行:
awk ‘$2 ~ /^h/‘ testfile
将把字符 h 作为第二个字段的第一个字符的所有记录打印至标准输出。此示例中的输出是:
smithern, harry
$指定字段或记录的末尾。命令行:
awk ‘$2 ~ /y$/‘ testfile
将把字符 y 作为第二个字段的最后一个字符的所有记录打印至标准输出。此示例中的输出是:
smawley, andy
smithern, harry
\ (反斜杠)转义字符。当位于在扩展正则表达式中具有特殊含义的任何字符之前时,转义字符除去该字符
的任何特殊含义。例如,命令行:
/a\/\//
将与模式 a //
匹配,因为反斜杠否定斜杠作为正则表达式定界符的通常含义。要将反斜杠本身指定为字符,则使用双
反斜杠。
识别的转义序列
awk 命令识别大多数用于 C 语言约定中的转义序列, 以及 awk 命令本身用作特殊字符的几个转义序列。 转
义序列是:
转义序列表示的字符
\"\"(双引号)
\//(斜杠)字符
\ddd 其编码由 1、2 或 3 位八进制整数表示的字符,其中 d 表示一个八进制数位
\\\ (反斜杠) 字符
\a 警告字符
\b 退格字符
\f 换页字符
\n 换行字符(请参阅以下的注)
\r 回车字符
\t 跳格字符
\v 垂直跳格
语言中的六种条件语句是:
if 需要以下语法:
if ( Expression ) { Statement } [ else Action ]
while 需要以下语法:
while ( Expression ) { Statement }
for 需要以下语法:
for ( Expression ; Expression ; Expression ) { Statement }
break 当 break 语句用于 while 或 for 语句时,导致退出程序循环。
continue 当 continue 语句用于 while 或 for 语句时,使程序循环移动到下一个迭代。
要显示字 start 和 stop 之间的所有行,包含“start”和“stop”,请输入:
awk ‘/start/,/stop/‘ chapter1
要运行一个处理文件 chapter1 的 awk 命令程序 sum2.awk,请输入:
awk -f sum2.awk chapter1
要以相反顺序打印前两个字段,请输入:
awk ‘{ print $2, $1 }‘ chapter1
如何打印单双引号?
awk ‘BEGIN {print "single quote --> \047";print "double quote --> \042" }‘
1. 除去重复项, 这个不多说, 只给出代码:
1. awk ‘!a[$0]++‘ file(s)
2. awk ‘!($0 in a){a[$0];print}‘ file(s)
标签:字符串
原文地址:http://21024.blog.51cto.com/11024/1833415