awk

awk 简单使用指南

佐手、 提交于 2020-01-28 08:23:35
技术博客: https://github.com/yongxinz/tech-blog 同时,也欢迎关注我的微信公众号 AlwaysBeta ,更多精彩内容等你来。 基本用法: awk '{print $0}' demo.txt 或者管道符方式: netstat | awk '{print $0}' 其中单引号中被大括号括着的就是 awk 语句,注意,其只能被单引号包含。 内建变量: 变量 描述 $0 当前记录(这个变量中存放着整个行的内容) 1 1~ 1 n 当前记录的第n个字段,字段间由FS分隔 FS 输入字段分隔符 默认是空格或Tab NF 当前记录中的字段个数,就是有多少列 NR 已经读出的记录数,就是行号,从1开始,如果有多个文件话,这个值也是不断累加中。 FNR 当前记录数,与NR不同的是,这个值会是各个文件自己的行号 RS 输入的记录分隔符, 默认为换行符 OFS 输出字段分隔符, 默认也是空格 ORS 输出的记录分隔符,默认为换行符 FILENAME 当前输入文件的名字 常用 输出第一列和第四列: netstat | awk '{print $1, $4}' 变量 NF 表示当前行有多少个字段,因此 $NF 就代表最后一个字段。 netstat | awk '{print $NF}' $(NF-1) 代表倒数第二个字段。 netstat | awk '{print

总结一些常用脚本

白昼怎懂夜的黑 提交于 2020-01-28 08:20:18
1、替换ceph.conf配置文件 if [ -n "`/usr/bin/grep -w paxos_min /etc/ceph/ceph.conf`" ]; then sed -i '/paxos_min/c\paxos_min = 5000' /etc/ceph/ceph.conf; else sed -i '/auth_client_required/a\paxos_min = 5000' /etc/ceph/ceph.conf; fi 2、删除一个root pool_name=xxxx;for i in `ceph osd crush ls "$pool_name"_host_group`;do ceph osd crush rm `ceph osd crush ls "$i"` $i ; done;for i in `ceph osd crush ls "$pool_name"_host_group`;do ceph osd crush rm $i ;done;ceph osd crush rm "$pool_name"_host_group 3、统计所有慢op 原型 ceph daemon osd.1 dump_historic_slow_ops|egrep -w "initiated_at|duration|time|event"|sed -e 's/"//g' -e

Linux Shell常用技巧(五)

ⅰ亾dé卋堺 提交于 2020-01-28 04:53:15
十一. awk编程: 1. 变量: 在awk中变量无须定义即可使用,变量在赋值时即已经完成了定义。变量的类型可以是数字、字符串。根据使用的不同,未初始化变量的值为0或空白字符串" ",这主要取决于变量应用的上下文。下面为变量的赋值负号列表: 符号 含义 等价形式 = a = 5 a = 5 += a = a + 5 a += 5 -= a = a - 5 a -= 5 *= a = a * 5 a *= 5 /= a = a / 5 a /= 5 %= a = a % 5 a %= 5 ^= a = a ^ 5 a ^= 5 /> awk '$1 ~ /Tom/ {Wage = $2 * $3; print Wage}' filename 该命令将从文件中读取,并查找第一个域字段匹配Tom的记录,再将其第二和第三个字段的乘积赋值给自定义的Wage变量,最后通过print命令将该变量打印输出。 /> awk ' {$5 = 1000 * $3 / $2; print}' filename 在上面的命令中,如果$5不存在,awk将计算表达式1000 * $3 / $2的值,并将其赋值给$5。如果第五个域存在,则用表达式覆盖$5原来的值。 我们同样也可以在命令行中定义自定义的变量,用法如下: /> awk -F: -f awkscript month=4 year=2011

sed,awk与正则表达式

梦想的初衷 提交于 2020-01-27 00:05:10
sed 擅长取行, awk 命令擅长取列 sed 格式 : sed <option> <script> <file> option -e : 执行多个命令 命令之间必须用分号隔开 命令末尾和分号之间不能有空格 例子: sed -e 's/brown/green; s/dog/cat' data.txt -f : 从文件读取命令 每个命令一行,无需分号 例子: sed -f script.sed data.txt -n :不产生命令输出,用print命令完成输出 script **s **: 用第二个斜线间的字符串替换第一个斜线间的字符串 例子: echo "a dog" | sed 's/dog/cat/' file 不指定则默认为 STDIN sed 不会修改 文件数据,而是把修改后的数据发送到 STDOUT awk 格式 : awk <options> <program> <file> option -f : 从文件读取命令 必须以 {} 开头结尾 每个命令一行,无需分号 -F : 自定义字段分隔符 默认分隔符是空白符 例子: awk -F: '{print $1}' /etc/passwd program 可以自定义 变量 引用自定义变量时不需要 $ 默认变量 $0 代表整个文本行 $1 代表第1个数据字段 $n 代表第n个数据字段 关键字 BEGIN

LINUX文本处理三剑客

扶醉桌前 提交于 2020-01-26 23:01:04
LInux想必大家都不陌生,命令行秒杀微软的DOS,自从用上了linux鼠标似乎离我也原来越远了.今天我们不多说linux,说说linux的文本处理工具. 一.Grep: 全称: Global search Regular expression and Print out the line. 作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的行; 模式: 有正则表达式字符以及文本字符所编写的过滤条件; REGXP:有一类特殊字符以及文本字符所编写的模式;其中有些字符不表示字符字面意义,而表示控制或通配的功能; 分两类: 1.基本正则表达式:BRE 2.扩展正则表达式:ERE 1.正则表达式引擎: Grep [OPTION] PATERN [FILE…] 选项; --color=auto: 对匹配到的文本着色显示; -v:显示不能够被pattern匹配到的行; -i: 忽略字符大小写; -o:仅显示匹配到的字符串; -q: 静默模式,不输出任何信息; -A #,after,后#行 -B #, before,前#行 -C #: context, 前后各#行 -E:使用ERE: ps: grep -E = egrep 基本正则表达式元字符: 字符匹配: .:匹配任意单个字符; []: 匹配指定范围内的任意单个字符; [^]: 匹配指定范围外的任意单个字符;

use text and use as command?

假如想象 提交于 2020-01-26 04:16:23
问题 i whant to build a script to extract the word from a file in a command: for example: in my file i keep my username , how can i export the username without knowing the username as part of my command , which my command is : suspend here should be the word exported? From my file which has the text inside "JOHN" how can i tell the command : suspend that the username is JOHN ? how can i cat/grep/sed the text from the file as part of command : something like suspend |cat file , i have try that but

AWK命令详解

ぐ巨炮叔叔 提交于 2020-01-26 02:33:19
说明:awk命令和 sed 命令一样,也是逐行扫描文件的,从第一行到最后一行,寻找匹配特定模板的行,并在这些行上运行“选择”动作。如果一个模板没有指定动作,这些匹配的行就被显示在屏幕上。如果一个动作没有模板,所有被动作指定的行都被处理。 1、awk的基本格式: awk 'pattern' filename awk '{action}' filename awk 'pattern {action}' filename 具体应用方式分别见如下三个用例: cat employees Tom Jones 4424 5/12/66 543354 Mary Adams 5346 11/4/63 28765 Sally Chang 1654 7/22/54 650000 Billy Black 1683 9/23/44 336500 #打印所有包含模板Mary的行 awk '/Mary/' employees Mary Adams 5346 11/4/63 28765 #打印文件中的第一个字段,这个域在每一行的开始,缺省由空格或其它分隔符。 awk '{print $1}' employees Tom Mary Sally Billy #打印包含模板Sally的行的第一、第二个域字段 awk '/Sally/{print $1, $2}' employees Sally Chang 2.

string replacement using awk command

匆匆过客 提交于 2020-01-25 20:38:55
问题 This is a continuation to my previous post string replacement using awk command which is not 100% fully resolved.. To make it clearer.. (The source file and code I am using are at the bottom of the post) requirement 1 If I dont have a lookup data(Eg, for "u_no" is not in the reference file, the current solution prints an empty field. aaaa uid=1a1a pwd=1b1b u_no= I want that to pick the value from the source file instead.. aaaa uid=1a1a pwd=1b1b u_no=12345 requirement 2 If the data in the

awk如何取出它的每一行和某一列的某个元素

冷暖自知 提交于 2020-01-25 15:04:42
我自己举例吧: NR==2,指定第二行,NR(Number of Record,记录数,awk中默认一行为一个记录) print $3,打印第三列 最后输出第二行第三列的元素。 ============================================================= awk进行列求和【awk '{a+= $0}END{print a}'】: Partition ods.ods_student{day=20151215, type=1} stats: [numFiles=1, numRows=302596, totalSize=3354786, rawDataSize=63545061] Partition ods.ods_student{day=20151215, type=2} stats: [numFiles=3, numRows=5443551, totalSize=116037964, rawDataSize=1241838051] Partition ods.ods_student{day=20151215, type=3} stats: [numFiles=1, numRows=4616, totalSize=107641, rawDataSize=1057064] 显示列:cat log|awk -F ":" '{print $2 }

Unix help to extract/print 50 lines after every 3rd occurrence pattern till end of file

江枫思渺然 提交于 2020-01-25 14:33:55
问题 I need help with extract/print 4 lines after every 3rd occurrence pattern till end of file. Consider below is example of log file ERROR_FILE_NOT_FOUND ERROR_FILE_NOT_FOUND ERROR_FILE_NOT_FOUND Extract line 1 Extract line 2 Extract line 3 Extract line 4 ERROR_FILE_NOT_FOUND ERROR_FILE_NOT_FOUND ERROR_FILE_NOT_FOUND Extract line 5 Extract line 6 Extract line 7 Extract line 8 ERROR_FILE_NOT_FOUND ERROR_FILE_NOT_FOUND ERROR_FILE_NOT_FOUND Extract line 9 Extract line 10 Extract line 11 Extract