您的位置:首页 > 运维架构 > Linux

linux命令3(文本处理相关)

2013-03-21 16:28 465 查看


locate查询文件地址



netstat查看端口占用情况

iconv  -f utf8 -t gbk -c log_haoma_20120823 -o log_haoma_20120823_decode

-c是忽略掉非法字符。。。

格式:iconv -f from-encoding -t to-encoding inputfile -o outputfile 

 

求交集

awk 'NR==FNR{a[$1]=1}NR>FNR{ if(a[$1]==1){print $0>"file3" }}' file1 file2 

求差集

file2-file1

awk 'NR==FNR{a[$1]=1}NR>FNR{ if(a[$1]!=1){print $0>"file3" }}' file1 file2 

 

输出结果为0.仍然有输出结果

cmd="cat aaaa.txt |wc -l"

uv_startup_t8_new = int.getRsByShell(cmd))

print uv_startup_t8_new



ps -ef | grep rsync

kill 进程号



awk中,变量用逗号隔开表示空格,默认输出换行符



此为输出文件中相同记录的数相加

awk '{a[$1] += $NF;}END{for(i in a){print a[i],i}}' gn1.txt |sort -k1 -rn >gnresult5.txt



sed与awk结合

cat fstart1_log_dx_1 | sed 's/gif?h=/\t/' |sed 's/&r=/\t/'| sed 's/&homepage=/\t/'|sed 's/&wc/\t/' |awk -F '\t' '{print $2,$4} '

##############

cp   -r   或   cp   -R移动整个文件夹



mysql的等于号就是一个等号: 除了mysql表名不能用.之外,表字段名和文件名都可以用.符号。。,



if (strpos($text,'?v=1.1')!==false) {$version='v1.1';}



1、在grep和sed中,\t和\s都是无效的,要表示制表符和空格,

只能直接敲入tab和空格键,这个在shell脚本中还好说,在命令行模式下就比较麻烦了,因为tab默认是会智能补全命令的,所以要在按tab之前按下ctrl+v,就可以把tab打出来了。



linux下:

ctrl-c 发送 SIGINT 信号给前台进程组中的所有进程。常用于终止正在运行的程序。

ctrl-z 发送 SIGTSTP 信号给前台进程组中的所有进程,常用于挂起一个进程。

ctrl-d 不是发送信号,而是表示一个特殊的二进制值,表示 EOF。

ctrl-/ 发送 SIGQUIT 信号给前台进程组中的所有进程,终止前台进程并生成 core 文件。



先排序,后uniq,首列显示每行重复的次数。

接着对以上的结果的第一列

sort log_fstart1guan1_20120323.txt |uniq -c |sort -n -k 1 -r



打包工具 同时进行压缩了

tar  -zcvf file1.tar.gz file1.txt

解压缩方法:

tar -zxvf /tmp/etc.tar.gz

参考网址:http://blog.sina.com.cn/s/blog_62c5db6e0100fgu6.html

tar

解压到指定目录。。

tar -zxvf  log_jy_1.tar.gz -C  aaa.txt



查询深度为1的文件,不包含子目录

find ./* -prune

find . -maxdepth 1 



sort的默认分隔符是空白 用-t指定

cut的分隔符用-d指定。cut的默认定界符是制表符


http://www.ibm.com/developerworks/cn/linux/l-tip-prompt/l-tiptex6/


20120606日计算:(对文件排序后,提取出第二个字段,再对第二个字段排序,再统计该字段的出现次数,再对次数进行排序)

sort log_20120605 | uniq |cut -f 2 -d ' '|sort |uniq -c|sort  -k 1 -rn 

$

从根目录下开始查找abc.cpp文件,无错误输出

find / -name abc.cpp 2>/dev/null

在当前目录下所有.cpp文件中查找efg函数

find . -name "*.cpp" | xargs grep 'efg'

xargs展开find获得的结果,使其作为grep的参数

另外 rm mv等命令对大量文件操作是报错 -bash: /bin/rm: Argument list too long

也可用xargs 解决

删除当前目录下所有.cpp文件

find . -name "*.cpp" | xargs rm

find . | xargs grep "aaa"

find ./  -type f -maxdepth 1查询深度为1的类型为普通文件的所有文件。

find / -name "test-find.c" -type f

find /  -type f

-maxdepth 默认情况下,find遍历所有子目录,但是你可以通过指定最大深度来控制这个行为。在前面的例子中,如果我们只想搜索这两个目录不想搜索下一层,你可以添加“-maxdepth 1”到命令中。设置最大深度为0表示只检验命令行中的给定文件。同样,你可以设定最小深度,从而避免搜索位于根目录的文件。

###########################

多个文件相同记录的次数相加,然后按照出现次数排序输出到文件中。

awk '{a[$1] += $NF;}END{for(i in a){print a[i],i}}' gn1.txt |sort -k1 -rn >gnresult5.txt

##############

cp -r文件夹如果是目的文件夹不存在就新建该文件夹并将源文件拷贝到该新建文件夹中,反之就在目的文件夹将源文件夹整个考进去。。

mkdir /log_config/log_$date/

#如果不建立该文件夹,cp的目录就不一样

cp -r config_access_199.136/ /gfs-se-dt/log_config/log_$date/

cp -r config_access_199.162/ /gfs-se-dt/log_config/log_$date/

cp -r config_access_135.170/ /gfs-se-dt/log_config/log_$date/

cp -r config_access_6.150/  /gfs-se-dt/log_config/log_$date/

########################

vim的全局替换:four替换成4

:%s/four/4/g

##################

awk 查询是否包含某个值用//

 比如awk ‘/key/ { print $1}’

@##############################################

求交集的新方法是cat 1.txt 2.txt |sort |uniq -d

ls  | grep -v .gz | xargs rm -rf 

删除以一个目录内不包含gz的文件。方法如上,rm不支持正则表达式。。

find /tmp ! -user reda

find..

cncrk_1

1499005_1

1499005

############rysnc#####

配置文件地址

/etc/rsyncd.conf

例子:

rsync -av 90@10.12.135.90::90/logParserguan .

先判断rsync进程是否存在:

ps aux |grep'rsync'

这样一般就能看到rsync这个进程的启动方法了。
http://www.bitscn.com/os/linux/201006/187593.html
启动方法:/usr/bin/rsync --daemon

 

ps -aux与ps -ef的区别(没有区别,两种风格。。。)

############################################

ls  | grep -v .gz | xargs grep 'defaultbrowser\.gif' > defaultbrowser.txt

######################################

awk -F 'Id=' '{print $2}' | awk -F '&' '{print $1}' | awk '{a[$1]+=1} END {for (i  in a) print i,a[i]}' 

############

du --max-depth=N      只显示参数指定的目录 N 层或以内的子目录的总用量

du -sh . 则显示当前文件夹下总大小

##################

grep 查制表符。。

grep -P "\t"  file

grep "action" a 

其中action是你的操作,按ctrl+v,然后松开v,按i

###############

AWk中

NF是域的个数 

$NF 是输出最后一个域的内容

######################

去掉空白行。。

awk '!/^$/' aa.txt  

awk '!~/^$/' aa.txt 

awk 'NF' aa.txt 

################################################

一个文件中找出前10行最长的行。dn的命令,

awk '{print length($0),$0}' file|sort -k1 -nr |head -n 10

##########################

awk如何输出第二个空格之后所有字段,一种方法是将第二个空格改为\t

输出

另一种是:但是不在一行了,awk '{for(i=2; i<=NF; ++i) {print $i}}' aa.txt

还有一种方法,但是开头会有空格符,然后还需要将开头的空格符过滤掉。。

awk '{$1="";print $0}'

vim查询字符串不区分大小写

/...\c

记录指令 (record)

q{a-z} -> 在某个寄存中记录指令 (record typed char into register)

q{A-Z} -> 将指令插入之前的寄存器 (append typed char into register{a-z})

q -> 结束记录 (stop recording)

@{a-z} -> 执行寄存中的指令 (execute recording)

@@ -> 重复上次的指令 (repeat previours :@{a-z})

还是给个例子来说明比较容易明白

我现在在一个文件中下qa指令,然后输入itest然后ESC然后q

这里qa就是说把我的指令记录进a寄存,itest实际是分2步,i 是插入 (insert) 写入的文字是 text 然后用ESC退回指令模式q结束记录。这样我就把itest记录再一个寄存了。

下面我执行@a那么就会自动插入test这个词。@@就重复前一个动作,所以还是等于@a

AADORAAA36QAAEc2AAAgkF7qObUk8lmdPloewA+oe0gWSPJzO+hlmJWtNFozcqjQs/vjgClO\x0D\x0A8TRk+Swk3YZBE5bPZROiBVxMNyRBtIgZfohZX78l4mouQpB8wYTVtBgMoQoRIHnnKYwvwvKZ\x0D\x0AWWPZQwXtynm8VScHj2qscp08fWhMK0IIbQ3uWbjTWDesT8DQpNmrlhkfraErdAPVKFkIKXGi\x0D\x0AeCLbVt6/KbVP9zJ1YJj1IlU8btSeZgBTban7iFq6uIjDE5haQtqBuUFIt81YqEw8+kzjnAtF\x0D\x0AfHjLl1Jukz0zIrtskbxLhc2KpTiQAzfpgksiXFBiT6z5nxWMFkq/conIqZhPOONiu0peu22g\x0D\x0AxbZimWqFyyeBfi3gsjRTJq9tJ9BBY7vBtOM=\x0D\x0A 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: