Shell·常用命令

xargs命令

对前面查询结果进行其他命令处理

-p 输出结果需要手动确认
-d 指定分割符
-n 指定每次输出几个-d分割的字符

echo '11@22@33' | xargs -p -d '@'  echo
echo '11@22@33@44@55@66@77@88@99@00' | xargs -d '@' -n 3 echo

查询并显示当前路径下文件信息
find ./ -name '*.txt' |xargs ls -l

查询排序

df -h 显示磁盘使用情况
du -s 显示目录使用情况
du -s /usr/* | sort -rn 从大到小
du -s /usr/* | sort -n 从小到大
du -s /usr/* | sort -rn | head 前面的10个
du -s /usr/* | sort -rn | tail 后面的10个

du -k /home/linux      以KB为单位
du -m /home/linux      以MB为单位
du -g /home/linux      以GB为单位
可加一个-h,表示"--human-readable",单位是k或者M ,结果列出后,更清楚。

1.按时间排序

#升序
find ./ -name *.txt |xargs ls -lta 
ls -lta
#降序
find ./ -name *.txt |xargs ls -ltr
ls -ltr

2.按大小排序

ls -l //显示详细信息
ls -i //查看indoes号
ls -la //显示目录下全部的子目录或者文件(包括隐藏的)
ls -lta //按时间排序
ls -ld //查看目录属性

#从大到小排序
find ./ -name *.txt |xargs ls -Sl 
ls -Sl       
#从小到大
find ./ -name *.txt |xargs ls -Slr 
ls -Slr      

替换文本中的某些字符

Linux中Cp936 就是gb2312

  1. 在文本中显示编码分割符
    printf "%b" "\u7f" >> a.txt
  2. 文本字符替换 ctrl+v+i 是制表符tab 键
    sed -i "s/ /hua/g" dd.txt
  3. iconv转换编码
    iconv -c -f latin1 -t utf-8 demo.txt > demo.txt
  4. 文本新增列指定值
    awk '{print $0,",新增的列"}' h1.csv >h2.csv
  5. 文本替换空格不需要加引号
    sed -i "s/ /'替换空格值'/g" dd.txt
enconv 转换文件编码,比如要将一个GBK编码的文件转换成UTF-8编码,操作如下
enconv -L zh_CN -x UTF-8 filename

iconv 转换,iconv的命令格式如下:
iconv -f encoding -t encoding inputfile
比如将一个UTF-8 编码的文件转换成GBK编码
iconv -f GBK -t UTF-8 file1 -o file2

查看文本编码
file demo.txt

vim demo.txt
:set fileencoding
 #显示
fileencoding=latin1

#查询终端编码集
locale
修改终端编码:
export LC_ALL=en_US.iso88591
修改终端编码还可以在 /etc/profile 设置。

设置文本格式:
1查看文本格式 esc键 然后 输入 :set fileencoding
2以某种格式查看文本数据 :set enc=GBK2312
3修改文本的格式:
当buftype=nofile时,不能保存文件,只有当buftype=空时,才可以保存
:verbose set buftype #查看buftype 设置

:setlocal buftype=
:set fileencoding=utf-8
:set ff=unix(或者:set fileformat=unix)
:wq! 

sed

用sed的i\命令在第一行前面插入即可,加上 -i 选项直接操作文件。

sed -i '1i\要添加的内容'  filename
查看插入第一行是否成功
sed -n '1,1p' filename

删除第一个字符或前几个字符
 sed 's/.//' test.txt  
 sed 's/.\{5\}//' test.txt 
 
sed 's/.$//' test.txt  ## 删除最后一个字符
sed 's/.4//' test.txt  ##删除特定字符及其前的字符
sed 's/4.//' test.txt  ##删除特定字符及其后的字符

awk

nr 相当于rowkey行号
NF表示当前行有多少个段
FNR是文件中的行数,和NR还是有点小小区别的
$0表示整行
$n表示第n个分段

打印所有列与行
awk '{print $0}' test.txt
指定分割符打印文本
awk -F "|" '{print FS}' test.txt
循环创建目录文件
awk 'BEGIN { for(i=0;i<5; i++) print "DD"i".TXT";}'|xargs mkdir

打印第一行与第三行
awk '{print $1, $3}' test.txt

显示行号与字段列的值
awk '{printf("%d:%s\n", NR, FILENAME)}' test.txt
将显示的行号与字段列的值输出成文本
awk '{printf("%s%d\n", FILENAME, NR)}' test.txt | xargs touch

FNR查询两个文本只显示当前文本的行数,NR两个文本的行数会一直累加排序显示
awk '{printf("%d:%d:%s\n", NR, FNR, FILENAME)}' test.txt test_bak.txt

NF表示当前行有多少个段
awk '{print NF}' test.txt
echo "good good study" | awk '{print NF}'

指定分割符打印文本
awk -F "|" '{print FS}' test.txt

当条件为真时打印文本
awk '1' test.txt
当条件为假时不打印文本
awk '1<=0' test.txt

查询包含Cat的行
awk '/Cat/' test.txt
sed -n "/Cat/"p test.txt	

打印第一列等于Cat的行
awk '$1=="Cat"' test.txt

打印文本的第二列
awk '{print $2}' test.txt
awk '{printf("%d\n", $2)}' test.txt

取文本的第二行到第四行
awk '{if(NR>=2 && NR<=4) print $0}' test.txt
sed -n "2,4"p test.txt

打印文本以t结尾的行
awk '/t$/' test.txt

打印文本以C开始的行
awk '/^C/' test.txt

打印文本不包含Cat的行
awk '!/Cat/' test.txt

计算字符串长度
awk '{print length}' test.txt
echo "good good study" | awk '{print length}'

正则表达式-取文本中包含100的行并且第四行大于60
awk '/100/ && $4 > 60' test.txt
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青鸟遇鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值