2016年4月9日星期六

Linux常用命令和管道符的使用

显示以a字符为结尾的所有行:
cat filename | grep a$

显示长度小于10的所有行:
cat filename | awk 'length($0) < 10 {print $0}'

可以使用'| more'一页页查看cat的结果

统计出现"NA"的行数:
cat filename | awk 'match($0, "NA") > 0 {print $0}' | wc -l

head:
ls | head -n 1 只显示第一行

取第n行:
cat xxx | head -n | tail -1

sort:
-n 按数字大小排序
-r 倒序
-k 2 按照第二列排序
-u 去重
-k 1,1 去重时从第一个开始,第1个结束
-t , 逗号为分隔符
-g 支持科学计数法排序

保留行号排序:cat result | awk '{print $0 " " NR}' | sort -k 1 -n > sorted_result

uniq:
去重。-c统计个数

sed /xx/d 删除包含xx的所有行
  用\[来表示左方括号,]表示右方括号
sed '/xx/!d' 删除不包含xxx的所有行

awk -F ',' 以逗号分隔
awk '{$1="";print $0}' file 删除第一列
关于sed、awk的使用实例,参考link.

按列求和,假设文件只有一列:
cat filename | awk '{sum+=$1} END {print sum}'

将hdfs中某个文件夹中所有文件(包含子文件夹)拷贝到另外一个文件夹目录(只拷贝所有文件,不拷贝文件目录):
hadoop fs -ls -R $origin_path | awk '$5!=0 {print $8}' | xargs -I {} hadoop fs -cp {} $destination_path
将文件重命名为1、2、3...:
hadoop fs -ls -R $origin_path | awk '$5!=0 {print $8}' | awk '{print "hadoop fs -cp " $1 " " "$destination_path" NR}' | sh

倒序输出
cat filename | tac

查看启动进程的文件
ll /proc/$pid/exe

将文件中所有字符转成大写
tr "[:lower:]" "[:upper:]" < 1.txt > 2.txt

没有评论:

发表评论