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
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
相关文章推荐
- 几个与文本处理相关的Linux命令总结
- 1、Linux文本处理基础命令
- Linux中的高级文本处理命令,cut命令,sed命令,awk命令
- Linux 文本处理命令
- linux 文本相关命令
- linux常用命令(1)-文本处理命令
- Linux命令之文本处理(二)
- Linux中对文本去重的处理命令
- Linux 入门常用命令 — 文本处理
- linux常用文本处理命令笔记整理
- Linux基础之文本处理命令(wc,cut,sort,uniq,diff,patch)
- linux文本处理三剑客(一):grep命令详解
- Linux中关于文本查看和处理的常用命令
- linux下的文本处理命令sed&awk&grep
- linux命令-文件文本、查看处理
- Linux 入门常用命令 — 文本处理
- Linux中常用命令之一——文本处理
- Linux中常用命令之一——文本处理
- Linux 三大文本处理命令之一GREP
- Linux 基础命令(八)—— 文本处理三剑客之sed