find /grep /xargs /sort /uniq /tr /cut /paste /sed /awk......待续......

1.find

名字查找:
find . -name file #eg: find -name *txt 正则查找:
find . -regex "pattern" #eg: find -regex ".*\.txt"
  -iregex:正则忽略大小写 反查找:
find . ! -name "*.txt"

按类型查找:
find . -type d
  d: 目录
  f:文件

按时间查找:
find . -atime 7 -type f
  atime:访问时间(默认天d)
  mtime:修改时间
  ctime:变化时间

按大小查找:
find . -type f -size +2k #+号大于,-号小于
  k,M,G

按权限查找:
find . -type f -perm 644

按用户查找:
find . -type f -user XX

搭配后续命令:
find . -type f -name ".swp" -delete #删除当前目录下所有的swp文件
find . -type f -mtime +10 -name "*.txt" -exec cp {} otherDir \
  #exec执行动作,{}表查找匹配到的每一个对象,\续行符
  #eg. -exec ./run.sh {} \

print:
find . -name "*.txt" -print0
#输出./2.txt./3.txt./1.txt     => 加上 -print0 参数表示find输出的每条结果后面加上 '\0' 而不是换行

2.grep

grep 'pattern' file  

  -o:只输出匹配文本行
  -v:只输出非匹配行
  -c:统计包含文本次数
  -n:打印匹配行号
  -i:忽略大小写匹配
  -r/R:递归匹配 #eg. grep -nr 'class' 当前目录所有匹配class的文件
  -e:匹配多个模式 #eg. grep -e 'class' -e 'genus' file

匹配多个字符
  任意字符:
  egrep 'word|wore' file
  grep -E 'word|wore' file
  grep 'word\|wore' file
  同时满足:
  grep word1 file.txt | grep word2

-w:字符串精确匹配
  grep -w '26' file #精确匹配26,不会匹配26a,262等,此法不能用于sed
  grep '\<26\>' file #效果同上,可移植到sed中,sed 's/\<0\>/NA/g' file
    (注意:0左右的.,;等符号仍会变为NA,如0.023替换为NA.023,最好加上边界符\b)
      echo 0.023 |sed 's/\\b\<0\>\\b/NA/g'

ls -l |grep msms

3.xargs

传参命令(因为很多命令不支持管道来传参),xargs实现的是将管道传输过来的stdin进行处理然后传递到命令的参数位上。

echo '--help' | cat   等价于  --help
echo '--help' | xargs cat 等价于 cat --help
echo 'test.c test.cpp' | xargs cat 等价于 cat test.c test.cpp
xargs常与其他命令组合使用,如grep, find

eg:
find /sbin -perm +700 |ls -l  错误
find /sbin -perm +700 |xargs ls -l  正确 cat file.txt |xargs #将多行输出变为单行输出
cat single.txt |xargs -n 3 #将单行变为多行输出(每行3个字段)

xargs的作用不仅仅限于简单的stdin传递到命令的参数位,它更大的作用是可以将stdin或者文件stdin分割成批,每个批中有很多分割片段,然后将这些片段按批交给xargs后面的命令进行处理。

xargs处理的顺序:先分割,再分批,然后传递到参数位。

分割   -d:定义定界符(默认空格,多行定界符为\n)
      echo '11@22@33' | xargs -d '@' echo #给echo传递了3个参数   
-0:指定\0为输入定界符(一般与find连用)     
      find fir -type f -name "*.pl" -print0 |xargs -0 wc -l #统计程序行数

分批   -n:指定输出为多行(参数)
      echo '11@22@33@44@55@66@77@88@99@00' | xargs -d '@' -n 3 echo
      #分割为10个参数,每次传递3个参数(要执行4次才能传递完参数),等价于:
        echo 11 22 33
        echo 44 55 66
        echo 77 88 99
        echo 0
      -E:不指定参数,注意只在不指定-d参数的时候有效
      echo '11 22 33' | xargs -E '33' echo
      #输出11 22

执行 -p:询问是否执行命令
      echo '11@22@33' | xargs -p -d '@'  echo
      ?...y #输入y执行

Ref: https://www.cnblogs.com/wangqiguo/p/6464234.html

4.sort

-n:按数字排序
-d:按字母排序
-r:逆序(大->小)
-k:加数字,指定列排序
-b:忽略前导空白符(如空格) sort -nrk 2 data.txt
sort -bd data.txt

5.uniq

消除重复行,常与sort连用
sort test.txt |uniq -c:统计各行次数
sort data.txt |uniq -c
-d:打印重复行
sort data.txt |uniq -d
-u:打印非重复行
   sort data.txt |uniq -u

6.tr

替换
cat file |tr '\t' ' ' 删除 -d
cat file |tr -d '0-9' #删除所有数字 补集 -c
cat file |tr -cd '0-9\n' #删除所有非数字

压缩 -s
  cat file |tr -s ' ' #压缩空格(最常用),即多个空格只保留第一个
  压缩制表符 '\t'

大小写转换:cat test.txt |tr '[:lower:]' '[:upper:]'

7.cut

--complement:取补集
  cut -f3 --complement file #取除第三行外的所有列

-d:制定分隔符
  cat -f2 -d";" file

分隔单位:
  -f:以字段为单位
  -b:以字节为单位
  -c:以字符为单位

取值范围:
  n-:n到结尾
  -m:开始到m
  n-m:n到m

eg:
  cut -c-2 file  #打印前2个字符
  cut -c2- file  #从第2个字符开始打印(包含第2个)

8.paste

-d:指定分隔符(默认为制表符)
paste file1 file2 -d ","

9.sed

-g:全局替换
seg 's/text/replace_text/g' file -i:直接替换
seg -i 's/text/repalce_text/g' file -d:删除
  sed 's/^$/d' file #删除空白行

替换换行符
sed ':label;N;s/\n/,/;t label' #将换行符替换为“,”
  Ref:http://workingxiaolong.lofter.com/post/6b719_e32bc11
  sed 's/Helicobacter.*//g;s/Sequence.*//g'
    替换单词后面的全部内容(包括特殊符号),注意点号不可少

数字匹配替换
[0-9]\+ #至少1个,+要转义
[0-9]* #至少0个,*不需转义

字符串替换
[a-zA-Z]\+
[a-zA-Z]*

转义:
  一般的特殊字符要转义 _ -  ->  +
  各种括号视情况而定,表字符串本身时需要转义

打印行:
  sed -n '1p;10p' file #打印第一行和第十行
  sed -n '1,10p' file #打印1-10行
  sed -n '1,5p;9p' test.txt #打印1-5行及第9行

删除行:
  sed '/abc/d;/efg/d' file #删除含字符串"abc"或“efg"的行
  sed '/^CON/d;/^REV/d' proteinGroups.txt

添加列:
  sed  'N;2atest1 test2' file # 第2行后添加一行(即第3行为test1 test2)
  sed 'N;2itest1 test2' file # 第1行前添加一行(即第1行为test1 test2),i前的数值至少为2
更易理解的方法:
  sed  '1 i\test1 test2' test.txt #在原第一行前添加一行
  sed  '1 a\test1 test2' test.txt #在原第一行后添加一行

10.awk

基本概念:

record:记录(行)

field:字段(列)

基本结构:

awk ' BEGIN{ statements1 } {statements2} END{ statements3 } '

工作方式:
  执行begin 1,再一行行读入重复执行2,最后执行end 3。

awk ' {print NR}' file  #打印每一行行号

awk ' END {print NR}' file  #打印最后一行行号

特殊字符:

常用:
  $0,$1,$2
  -F:设置分隔符(默认空格),-F'\t' -F:
  NR:当前行号
  NF:当前行的字段(列)
  FNR:多个文件时,每处理一个新文件都从1开始计起(而NR会累加)
其他:
  RS:行分隔符(默认换行符\n)
  ORS:输出当前行分隔符,与RS互为逆向/替换
  FS:列分隔符
  OFS:输出列分隔符(常用),与FS互为逆向/替换
    awk 'BEGIN{ FS="----";OFS="\t" }{ print $1,$2,$3 }' filename

ref: https://www.cnblogs.com/fhefh/archive/2011/11/16/2251656.html

对行进行过滤:

awk 'NR<=5' file   #打印前5行,同head
awk 'NR==1,NR==4{print}' file #打印第1和4行
awk '/linux/' file #打印匹配行
awk '!/linux/' file #打印非匹配行
awk '/start_/, /end_/' file #打印两者(第一个)之间的行

Linux基础——常用命令的更多相关文章

  1. Linux基础常用命令大全学习

    1.ls命令 就是list的缩写,通过ls 命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限(包括目录.文件夹.文件权限)查看目录信息等等 常用参数搭配: ls -a 列出目录所有文 ...

  2. Linux基础-常用命令

    常用的压缩命令 一.tar 1.压缩:tar zcvf [压缩包名].tar.gz [待压缩的文件名 ... ] 2.解压缩:tar zxvf [压缩包名].tar.gz -C [指定的解压目录] 3 ...

  3. Linux基础常用命令

    Linux 下命令有很多,并且很多命令用法又有不同的选项,这里介绍一些常用的最基本的Linux命令的用法,希望给大家留下便利之处. 1.cd 切换目录.例如 cd /home 可切换到home目录,  ...

  4. 三、linux基础-常用命令man_cd_|_find_ln_>_history

    3通用命令3.1 man命令man pwd      来查看该命令的全部帮助手册备注:命令最终是在内核中执行的,但是内核并无法直接识别,所以先通过shell执行,然后再交给内核执行3.2 cd 命令c ...

  5. Linux系统管理 常用命令

    基础常用命令 某个命令 --h,对这个命令进行解释 某个命令 --help,解释这个命令(更详细) man某个命令,文档式解释这个命令(更更详细)(执行该命令后,还可以按/+关键字进行查询结果的搜索) ...

  6. Linux学习笔记(9)linux网络管理与配置之一——Linux基础网络命令与学习大纲(0)

    大纲目录 0.常用linux基础网络命令 1.配置主机名 2.配置网卡信息与IP地址 3.配置DNS客户端 4.配置名称解析顺序 5.配置路由与默认网关 6.双网卡绑定 [1] ping [2]net ...

  7. Linux GDB常用命令一栏

    Linux GDB 常用命令如下: 1.启动和退出gdb (1)启动:gdb ***:显示一段版权说明: (*** 表示可执行程序名) (2)退出:quit.有的时候输入quit后会出现相关提示:类似 ...

  8. Linux 下常用命令

    linux 下常用命令: 1.删除文件命令为 rm 2.创建目录的命令是:mkdir 3.删除目录的命令是rmdir(空目录) 4.切换到root帐号:su 5.查看所有进程:ps -aux 6.杀死 ...

  9. linux 服务器常用命令整理

    linux 服务器常用命令整理 目录 网络分析 - tcpdump \ telnet \ (netstat \ ss \ lsof) \ nload 网络传输 - scp \ rsync \ (rz ...

随机推荐

  1. Android构建工具--AAPT2源码解析(一)

    一.什么是AAPT2 在Android开发过程中,我们通过Gradle命令,启动一个构建任务,最终会生成构建产物"APK"文件.常规APK的构建流程如下: (引用自Google官方 ...

  2. [敏捷软工团队博客]The Agiles 团队介绍&团队采访

    项目 内容 课程:北航-2020-春-敏捷软工 博客园班级博客 作业要求 团队作业-团队介绍和采访 团队名称来源 The Agile is The Agile. 敏捷就是敏捷.我们只是敏捷的践行者罢了 ...

  3. Noip模拟34 2021.8.9

    T1 Merchant 一眼二分,然后想了想维护凸包,好像并没有什么关系, 然后又想了想维护一个栈,发现跳指针细节过多不想打 最后直接打了二分,大点跑的飞快,感觉比较稳,出来$78$分 是没用神奇的$ ...

  4. 转:VIVADO使用技巧:设置DCI与内部参考电压

    本文转自:Vivado使用技巧(12):设置DCI与内部参考电压 - 灰信网(软件开发博客聚合) (freesion.com) DCI与内部参考电压 Xilinx FPGA提供了DCI(Digital ...

  5. OpenEuler树莓派基础实验

    OpenEuler树莓派基础实验 1.任务详情 1. 参考https://www.cnblogs.com/rocedu/p/14615565.html 完成OpenEuler的安装,提交过程博客和截图 ...

  6. SimpleNVR流媒体服务在多分屏直播实时阅览时所遇到问题的解决

    视频有一个流的概念,称为流媒体.当大量的客户端或WEB访问监控摄像机的时候,大多数的录像机无法承受那么大的网络压力,这时候SimpleNVR流媒体服务器的优势就显示出来了.其能将客户端的访问压力转到服 ...

  7. Firefox火狐浏览器提示您的链接并不安全(解决办法)

    火狐浏览器不管访问什么,一直提示连接不安全 解决办法: 1.在Firefox地址栏输入"about:config",回车,进入如下图页面 点击"我了解此风险" ...

  8. idea连接数据库时区:Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' prope

    错误界面 IDEA连接mysql,地址,用户名,密码,数据库名,全都配置好了,点测试连接,咔!不成功! 界面是这样的, 翻译过来就是:服务器返回无效时区.进入"高级"选项卡,手动设 ...

  9. [LINUX] Arch Linux 硬盘拷贝式装系统+新增 home 分区

    目录 前言 1. 实操 1.1 整个磁盘拷贝 1.2 创建 home 分区 1.3 修改 fstab 实现自动挂载 2. 涉及到的知识点 2.1 fstab 2.2 dd 命令 2.3 fdisk 命 ...

  10. redis数据存储的细节

    redis是一个K-V NoSql非关系型数据库,redis有物种数据类型,分别是String,Hash,list,set,zset:这五种类型都是针对K-V中的V设计的. 1.总体介绍:关于redi ...