liunx文件操作技巧

1.查找文件中字符串出现次数:

命令: grep -c 'httpSample' kmtest0924.jtl

2.vi 中调到文件结尾命令:

命令:G

3.vi中恢复上次操作命令:

命令:U

4.查找文件中指定字符后面的内容写入新文件

查找文件中keyName和之后内容

grep --only-matching 'keyName=[^&]*' v5.log > v5_new.log

方法二:

查找一下文件中keyName= 后面的内容

sed 's/^keyName=//' v5_new.log > v5_new55.log

5.grep -v 'rc ="200"' kmtest0804.jtl

将kmtest0804.jtl 中的非‘rc =“200”’列出来

6.跳到段尾

shift+$

7.退出文件

ctrl+z

8.查询文件中某个字符的个数

grep -r -o "prize" /letv/apache-jmeter-2.13/bin/prize/*.json |wc -l

grep -c "validDrawNumToday" /letv/apache-jmeter-2.13/bin/prize/*.json

9.查找某个字符保存到文件中

grep "validDrawNumToday" /letv/apache-jmeter-2.13/bin/prize/*.json > kk.txt

10.查看jmeter起了多少线程

netstat -anpt |grep :80 |wc -l

-------------------------------------------------------------------------------------------------------------------------------------------

11.日志中以空格分隔开的数据,这么取每行中的指定位置字段

cut -d' ' -f 8 _tmp_access.log-20161008 | sed 's/^"//; s/\?.*//;' | sort | uniq -c | sort -rn | head -21 > /letv/temp.log

 cut 命令:

(1)其语法格式为:
cut  [-bn] [file] 或 cut [-c] [file]  或  cut [-df] [file]

使用说明
cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。

主要参数
-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符。
-f  :与-d一起使用,指定显示哪个区域。
-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的<br />范围之内,该字符将被写出;否则,该字符将被排除。

(2)cut一般以什么为依据呢? 也就是说,我怎么告诉cut我想定位到的剪切内容呢?

cut命令主要是接受三个定位方法:

第一,字节(bytes),用选项-b

第二,字符(characters),用选项-c

第三,域(fields),用选项-f

 sed 命令:

[root@www ~]# sed [-nefr] [动作]
选项与参数:
-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e :直接在命令列模式上进行 sed 的动作编辑;
-f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作;
-r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)
-i :直接修改读取的文件内容,而不是输出到终端。

动作说明: [n1[,n2]]function
n1, n2 :不见得会存在,一般代表『选择进行动作的行数』,举例来说,如果我的动作是需要在 10 到 20 行之间进行的,则『 10,20[动作行为] 』

function:
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!

12.log分割另外方法

cat _tmp_access.log-20161008 | awk '{gsub("\"","",$8); split($8,a,"?"); print a[1]}' | sort | uniq -c | sort -rn | head -21 > /letv/temp_cat.log

awk  -F "\001" '{gsub("\"","",if($7~/iptv/)); split($8,a,"?"); print a[1]}'

awk -F'\\^A' '{print $7$8}' demo.log 按照^A 分割打印出第7第8个域内容

-------------------------------------------------------------------------

cut -d^A -f8 demo01.log | sed 's/\?.*//' | sort | uniq -c | sort -nr
这里的^A是Ctrl+A输入的

----------------------------------------------------------------------------------------------------------

删除文件中的空格或者回车行

sed '/^\s*$/d' data.txt   #这个命令还可将完全空格、tab等组成的空行删掉。

--------------------------------------------------------------------------------------------------------

去除文件中指定字符

1)用tr命令
# grep -v "#" /etc/snmp/snmpd.conf |tr -s '\n'

2)用sed命令
# grep -v "#" /etc/snmp/snmpd.conf |sed 's/^$/d'

3)用awk命令
# grep -v "#" /etc/snmp/snmpd.conf |awk '{if($0!="")print}'

4)用grep命令
# grep -v "#" /etc/snmp/snmpd.conf |grep -v "^$"

-------------------------------------------------------------------------

猜你喜欢

转载自km-moon11.iteye.com/blog/2248034
今日推荐