一、压缩解压命令
Linux最基本的就算是对文件的压缩和解压操作了吧,现简单整理下常用命令:
1.tar命令(涉及后缀.tar .tar.gz .tgz)
压缩单文件夹:tar czvf FileName.tar DirName
压缩多文件夹:tar zcvf FileName.tar.gz DirName1 DirName2 DirName3 ...
解压文件:tar zxvf FileName.tar
2.gz命令(涉及后缀 .gz)
压缩:gzip FileName
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
3.zip命令(涉及后缀 .zip)
压缩:zip FileName.zip DirName
解压:unzip FileName.zip
二、向文件行首或行尾加入固定字符
1.向行首加入固定字符 :sed -i 's/(^)/字符/g' file.txt
2.行首固定长度(一个点的长度为1)的字符替换成固定字符: sed -i 's/(^.)/字符/g' file.txt
3.向行尾加入固定字符 :sed -i 's/($)/字符/g' file.txt
4.行尾固定长度(一个点的长度为1)的字符替换成固定字符: sed -i 's/(.$)/字符/g' file.txt
5.文本替换: sed -i 's/替换前字符/替换后字符/g' file.txt
6.linux下还有一种常用分隔符,在Windows中不可见,如^M,是用ctrl+V+M打出来,其他符号同理类推。
7.删除文件第一行数据,特别适合文件特别大,不适合vim打开的操作。sed -i '1d' filename
三、文件拼接
paste
四、文件切分
split 文本内容切分 cut
五、文件合成
将一个文件夹中的文件都写入一个文件中去:find -name "*.txt" -exec 'cat' {} ; > test.tmp
将一个文件A中包含的文件B中的内容全部去除(B文件内容较少的情况):cat fileA | egrep -v "`cat fileB`" > c
六、排序
sort
1.按照文件制定的某一列排序,-t,需特别注意的是,制表符不能用 直接切分,需要利用如下的方式进行分隔:
1.1 sort -t $' ' -k1 -g -r test> test_sort
1.2 sort -t'<ctrl>v<tab>' -k1 -g -r test> test_sort 注:<ctrl>v<tab>代表先同时按下Ctrl和v键,然后松开,按下tab键
2 .sort + uniq 可以统计文本中每行内容出现的次数(uniq -c),同时也可去重。
七、查看工具的安装路径
which
eg.which python即可查看Python的安装路径
八、后台操作
screen ( 与nohup异曲同工 )
1. detach窗口:ctrl+a+d
2. 恢复:screen -r
3. 杀死:ctrl+a+k(测试貌似没什么反应,exit即可)
九、for循环
for i in {3..8..2} do #time=`date +'%Y%m%d' -d "$i day ago"` #i天前的日期 #cat 'data/'$time'_result' >> testFile echo $i done
#> file #新建一个文件
i 的取值范围{3..8..2}中,3表示开始的位置,8表示结束的位置,2为步长。
2.另一种表达方式
for i in {0..10..1} do #time=`date +'%Y%m%d' -d "$i day ago"` #cat 'data/'$time'_result' >> testFile echo "i:"$i #m=10 p=$(expr 10 - $i) echo "p:"$p #for j in {0..${p}..1} for((j=0;j<=${p};j++)) do echo "j:"$j k=$(expr 10 - $i - $j) echo $i"_"$j"_"$k done done
十、神器
1.AWK
1.1行切分,列之间以 "^A"分隔符进行切分,取第27列。(此命令中$0表示这行数据本身)
cat test | awk -F "^A" '{print $27}' >> test.out
1.2列选择,常见的就是训练集和测试集的划分啦。
awk '{if(NR%10==0){print $0}}' file > test
awk '{if(NR%10!=0){print $0}}' file > train
1.3 计算平均
awk '{sum+=$1} END {print "Average = ", sum/NR}'
1.4 截取指定区间
awk 'BEGIN{FS="[= ]"}{for(i=1;i<=NF;i++)if($i=="{DSSM_ID")print $(i+1)}' > test
1.5 保留小数点后指定位数
awk '{printf "%.2f ", $1}' test
2.SED
3.GREP
3.1 egrep
egrep 是筛选出满足条件的行,egrep -v就是剔除满足条件的行,|表示或,满足其中之一即可。
3.2 统计一段文本中指定字符的个数
grep -o 'haha' file | wc -l
附:awk -v RS='haha' 'END {print --NR}' file 也可以,亲测有效
-v 去设定一个变量的值,RS是记录的分隔符,默认的是新行( ),就是说awk按照一行一行读数据,但是现在RS为'haha'后,就按'haha'读数据了,NR为已读的记录数,n个记录是被n-1个分隔符分开的,所以就是--NR了
十一、查看剩余空间
1.du
du -ah --max-depth=1 这个是我想要的结果 a表示显示目录下所有的文件和文件夹(不含子目录),h表示以人类能看懂的方式,max-depth表示目录的深度。
2. df
df -hl 常用命令
【reference】
1.http://blog.csdn.net/zhoubl668/article/details/44341447