Viewing posts from May, 2011
awk 'pattern' file awk '{action}' file awk 'pattern {acction}' file
符号 | 说明 | 默认值 |
---|---|---|
ARGC | 命令行变量个数 | |
ARGV | 命令行变量数组 | |
FILENAME | 当前输入文件名 | |
FNR | 当前文件中的记录号 | |
FS | 输入域分隔符 | 空格 |
RS | 输入记录分割符 | 回车 |
NF | 当前记录里域个数 | |
NR | 到目前为止记录数(行号) | |
OFS | 输出域分隔符 | 空格 |
ORS | 输出记录分隔符 | 回车 |
$0 | 整条记录 | |
$n | 记录的第N个区域 |
awk '/101/' file # 匹配字符串所在行 awk '/101/,/105/' file # 匹配两个字符串之间的所有行
awk '$3 == 5245' file # 匹配数字 awk '$4 > 1000' file awk '$1 * $2 >100' file awk '$2 >5 && $2<=15' file awk '$1 == "CT"' file # 匹配字符串 awk '$2 ~ /Adm/' file # 匹配正则表达式 awk '$2 !~ /Adm/' file
awk '{print NR,NF,$1}' file # 打印文件的当前记录号、域数和每一行的第一个域 awk '{print $NF}' file # 打印文件的每一行的最后一个域 awk '{print "Month: " $2 "\nYear: ", $6}' file # 打印格式化内容 awk '/101/ {print $1,$2 + 10}' file # 打印匹配条件的每一行的第一、二个域加10 awk '/101/ {print $1 $2}' file # 打印时每个域中间没有分隔符
awk '{$1 == 'Chi' {$3 = 'China'; print}' file # 找到匹配行后先将第3个域替换后再显示该行(记录)。 awk '{$7 %= 3; print $7}' file #将第7域被3除,并将余数赋给第7域再打印。
把file1、file2、file3的文件内容全部写到fileall中,格式为打印文件并前置文件名。