linux文本处理shell命令
所属分类 linux
浏览量 1071
find grep xargs sort uniq tr cut paste wc sed awk
find . -name "*.txt" -print
find . ! -name "*.txt" -print
find . -name "*.txt" -o -name "*.java"
find . -maxdepth 1 -name "*.txt" -print
大于2k的文件
find . -type f -size +2k
大于20M的文件
find . -type f -size +20M
最近两天修改过的文件
find . -mtime 2 -name "*.txt"
-atime 访问时间 (单位天)
-mtime 修改时间 (内容被修改)
-ctime 变化时间 (元数据或权限变化)
find . -name ".DS_Store" -delete
执行动作 exec
将找到的文件复制到指定目录
find . -mtime 2 -name "*.txt" -exec cp {} ~/tmp \;
{} 替换成相应的文件名
xargs
find . -name '.DS_Store'|xargs rm
find . -name "*.txt" | xargs grep 'tiger'
sort
第一列作为数字降序排序
jstack 7363|grep java.lang.Thread.State: |sort|uniq -c|sort -rn -k 1
75 java.lang.Thread.State: WAITING (parking)
34 java.lang.Thread.State: RUNNABLE
9 java.lang.Thread.State: TIMED_WAITING (sleeping)
8 java.lang.Thread.State: TIMED_WAITING (parking)
3 java.lang.Thread.State: TIMED_WAITING (on object monitor)
2 java.lang.Thread.State: WAITING (on object monitor)
tr 转换
制表符转空格
cat text| tr '\t' ' '
删除所有数字
cat file | tr -d '0-9'
压缩
echo "hell o 123" |tr -s ' '
df |tr -s " " |cut -d" " -f5
cut按列切分
获取第2列和第4列
cut -f2,4 filename
cut -f2,4 -d"," pet.txt
-d 指定分隔符
第一到5个字符
cut -c1-5 file
前2个字符
cut -c-2 file
-b 以字节为单位
-c 以字符为单位
-f 以字段为单位
paste按列拼接文本
paste -d"," 01.txt 02.txt
wc统计行和字符
统计行数
wc -l file
统计单词数
wc -w file
统计字符数
wc -c file
sed文本替换
替换每一行的第一处匹配的text
sed 's/text/replace_text/' file
sed 's/abc/xyz/' data.txt
全部替换
sed 's/text/replace_text/g' file
sed 's/abc/xyz/g' data.txt
sed -i 's/text/repalce_text/g' file
-i 原文件
移除空白行
sed '/^$/d' file
awk数据流处理
1.执行begin中语句块
2.从文件或stdin中读入一行,然后执行statements2,重复这个过程,直到文件全部被读取完毕;
3.执行end语句块;
print 打印当前行 使用不带参数的print时,打印当前行;
echo -e "line1\nline2" | awk 'BEGIN{print "start"} {print } END{ print "End" }'
最常用的 10 条 shell 命令
history | awk '{print $2}' | sort | uniq -c | sort -nr |head -n 10
$2 第二列
NR 记录数量 当前行号
NF 字段数量 当前行字段数
$0 当前行
$1 第一个字段内容
$2 第二个字段内容
echo -e "a b c\nx y z" | awk '{print NR":"$0"-"$1"-"$2}'
1:a b c-a-b
2:x y z-x-y
统计文件行数
awk ' END {print NR}' file
awk实现head、tail命令
head
awk 'NR< =10{print}' filename
tail
awk '{buffer[NR%10] = $0;} END{for(i=0;i<11;i++){ \ print buffer[i %10]} } ' filename
Linux查找命令使用及其区别
linux之grep命令
linux sort 命令
上一篇
下一篇
Java 正则表达式
Elasticsearch实用监控指标TOP10
三国演义里的职场道理
elasticsearch集群搭建
Elasticsearch analyzer 和 search_analyzer
Elasticsearch5快速入门