Linux命令总结

linux三剑客awk、grep、sed应用环境即常用命令

linux常用命令链接

https://man.linuxde.net/dos2unix

https://man.linuxde.net/命令

https://man.linuxde.net/awk

文本处理

  • awk

    cat name.txt|awk '{print $1,$NR,$0}' 读取name.txt 输出第一列$1,最后一列$NR,和整行$0

分列输出文件无需循环,分列精品。

awk -F , 'NR!=1{print $2 >$1".txt"}' geneinfo.csv 指定 ,为分隔符,逐行输出第二列的内容到对应的第1列的
文件名的txt文件。

awk使用shell中的变量

awk中的变量不需要使用$符号。使用$符号则表示的是第n列。

num=100
awk -v num=$num 'BEGIN{print num/0.5}'

awk向shell中传递变量

eval $(awk 'BEGIN{print "var1='str1';var2='str2'"}')
#           $()等价于``
eval `awk 'BEGIN{print "var1='str1';var2='str2'"}'`

awk 获取指定列(此处是第三列到最后一列)分隔符为一个空格

awk -F " " '{for(i=3;i<=NF;i++) {printf $i" "} printf "\n"}' file

awk获取指定列(此处是第三列到最后一列)分割符为tab

awk '{$1="";$2="";print $0}' file |sed 's/\t\t//g'

cat name| grep zhan 查找name文件里含有zhan的行
grep -v "node" filename 查找filename里不包含node的行

  • sed

    sed -n '1,10p' name.txt 获取1-10行的内容

  • cut
    cut -f 4-10 test.txt#获取text.txt的第4-10列。

cut参数说明

-b 表示字节;
-c 表示字符;
-f 表示定义字段。

指定分隔符号使用-d 符号
N-:从第N个字节、字符、字段到结尾;
N-M:从第N个字节、字符、字段到第M个(包括M在内)字节、字符、字段;
-M:从第1个字节、字符、字段到第M个(包括M在内)字节、字符、字段。
例:
cut -f 5- -d "," test.csv 查看test.csv文件的第5列到最后一列,指定的分隔符号是,
cut -c 1-4 test_Dsuite.txt 查看文件的第1到第4个字符。

  • column
    column -t 文件按照table格式查看,配合head可以更加清楚的阅读文件的前几行。
    column -t test_Dsuite.txt|head -5 查看tab分割文件的前5行,以table格式查看。

文件处理

  • find 查找文件

    find ./ -name "*.txt" 查找当前目录下所有的txt结尾的文件,包括子目录里的文件。

  • rename 批量重命名(此处的rename是perl版本的)

    rename有C语言版本和perl版本,以下命令均是perl版本的命令。

    使用命令man rename如果返回的窗口首行有perl`则是perl版本,否则即是C语言版本。

    ubuntu安装perl版本的rename

    sudo apt update
    sudo apt-get install rename
    

rename参数讲解: s表示使用正则, 第1-2个/之间是要匹配的内容,$表示文件结尾。第2个/之后是要替换成的内容,最后跟上要操作的文件 *表示所有文件。注意:perl中''""不等价,此处应该使用的是单引号''

  • 字符替换

    rename 's/AA/aa' *.fa 把所有.fa文件名中的AA替换成aa

  • 修改文件后缀

    rename 's/\.html/\.php' * 把.html文件改为.php文件

    rename 's//$/.txt' *把所有文件名末尾添加.txt

    rename 's/^/admin' * 所有文件开头添加字符admin

    rename 'y/A-Z/a-z/' * 修改文件名大写字符为小写

    rename 's/[]+//g' * 去掉文件名中的空格

    rename 's/\.bak$//' *.bak 所有的.bak后缀名的文件全部删除后缀名

  • 正则匹配修改文件名

    • rename 's/(/d)/第$1章/' * 修改为第1章,第2章

方法1:把文件名拆分处理,可以任意修改文件名

find -name '*.log' -printf %f//n|awk -F'.' '{print $1}'|xargs -i{} mv {}.log xiyun_{}.log

方法2:利用rename

一般的linux下的rename命令比较简单

rename 'test' 'xiyun' '*.log'

把文件名中的某部分字符串替换掉

ubuntu下的rename命令支持正则表达式,因此功能更强大。

方法3:直接利用find和xargs和mv,中间不用awk,这样只能添加后缀名,不能修改文件名。

  • ln 建立超链接

    ln 远端文件 新文件 新文件即生成的远端文件的硬链接

    ln -s /disk/readme ./read 生成软链接,实际是在当前目录生成名为read的超链接,链接到disk/readme ,访问read,即相当于访问readme

  • dos2unix 转换windows文件为Unix格式

    dos2unix test.py把test.py转换成Unix格式

    dos2unix -n test.py u-test.py把test.py转换成unix的新文件u-test.py

    dos2unix -o test.py直接修改原始文件格式为unix

    dos2unix file1 file2 file3 同时修改多个文件的格式为unix

  • unix2dos 转换Unix格式为windows

    unix和windows 的文件格式中换行符的格式不一致,一定要注意转换换行符。否则会报错。

    unix和windows的文件系统也不一致,windows的Fat32(不支持单个文件大于4G),NTFS(目前常用的文件系统格式),linux是Ext2格式。如果要在两种系统格式之间传输文件,NTFS的硬盘在linux上不会被识别,最后使用第三方软件识别。

  • md5sum MD5值生成核对

    md5sum test生成test文件的md5值。

    md5sum -c testsum test 核对test的文件和testsum文件中的MD5值是否一致。

  • 排序参考
    sort test.txt排序
    sort命令的字段
    -n按照数字进行排序 -d 按照字典顺序排序
    -r 逆序排序
    -k N指定按第N列排序
    sort -nrk 1 data.txt
    sort -bd data//忽略空格之类的前导空白符
    sort info.csv|uniq 反向排序
    sort test.txt | uniq消除重复行
    sort test.txt | uniq -c 统计重复行出现的次数
    sort test.txt | uniq -d找出重复行
    指定每行中需要比较的重复内容 -s 开始位置 -w 比较字符数

  • 进程管理(杀死进程参考)
    ps 查看后台进程(仅限当前终端用户的后台进程)

    image.png

    ps命令输出的第一列即为PID.
    ps -ef查看所有用户进程
    kill -s 9 3645522 杀掉PID为3645522的进程,此处是杀掉md5sum的进程。
    pkill -9 md5sum 强力删除程序名为md5sum的进程。

kill -s 9 `pgrep vim `  #使用pgrep和kill来删除名字为vim的进程。

-进程检测
ps -x |grep fastp|grep -v "grep"|wc -l 统计当前用户的所有运行进程中,名字为fastp的进程数量

  • 文件名字符的处理
    cut参考
    expr参考
    name是一个文件夹,里面有zao_L2_384384.R1.fastq.gz之类文本。
    cut -f1 -d "." name 指定分割符号.分割,获取第一列的字符
    cut -f1 -d "." --complement name 指定分割符号.分割,删除第1列后的字符
    expr substr zao_L2_384384.R1.fastq.gz 1 3 获取字符串的指定字符,第1-3个字符。
    -xargs
    ls *.gz|grep F2-3|xargs -i mv {} ./F2-3/查找当前目录中所有的gz文件,从中找到含有F2-3的,全部移动到当前目录中F2-3文件夹中。

进程监控脚本

#!/bin/bash
line=`ps x|grep processname|grep -v "grep"|wc -l`
while [ $line -gt 0 ]
do
    echo "no~"
    sleep 30
    line=`ps aux|grep processname|grep -v "grep"|wc -l`
done
echo "yes!"
image.png

磁盘空间查看

df -lh 查看整个服务器的磁盘分区使用情况
du -lh 查看当前目录的磁盘使用情况

查看服务器运行状态

top 所有信息
top -u username 指定用户的运行信息
ps -ef所有进程信息
ps -x 当前用户的进程

文件查看工具

head filename 查看前几行,

  • head -10 readme 查看readme文件的前10行
    tail filename
  • tail -8 errinfo 查看errinfo文件的后8行
    more filename 滚动方式查看文件,空格或enter键,往下继续阅读。不能上翻
    less filename 滚动方式查看文件,pgdn向下翻页,pgup向上翻页。
    vim readme 使用vim编辑readme文件。

文件传输

常用的文件传输类型有:win-linux和linux-linux
mac没用过不清楚。

  • windows传输到linux,我一般使用 winSCP这个软件下载地址。各大软件商店都有这款软件。
  • linux到linux传输,使用命令scp.参考文章
    例如有如下两个主机:172.28.218.254(本地)172.28.210.9(远程)
    传输文件
    在本地主机(172.28.218.254)运行如下命令:
    说明:chaim是我在远程主机上的用户名
    • 获取远程目录maize
      scp -r chaim@172.28.210.9:/disk/maize/ ./maize/
      /disk/maize/ 这是远端服务器的文件地址 ./maize/这是存储到本地服务器的地址
    • 获取远程文件readme
      scp chaim@172.28.210.9:/home/info/readme ./Readme
      +将本地文件上传到远程
      scp /public/disk.info chaim@172.28.210.9:/home/info/disk.info
      +将本地文件夹上传到远程
      scp -r /public/maize/ chaim@172.28.210.9:/disks/backup/maize/
  • 指定端口2235传输本地bam到远程主机172.28.210.9
    scp -P 2235 sam1.bam chaim@172.28.210.9:/disks/backup/maize/
在经历了scp传输中断,多个大文件需要重新传输的痛苦后,决定使用支持断点续传的rsync

rsync 传输时,在另一端主机上会生成临时的隐藏文件,通过ls -la可以查看到。等待传输完成或中断时会显示出正常的文件名。
上传数据到远程服务器
rsync -P --rsh=ssh readme.md tang@172.28.218.254:~/chaim/

指定端口2222,传输bam文件到远程主机21.28.170.146

rsync -P -e 'ssh -p 2222' sample.bam chaim@21.28.170.146:/share/home/bam

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容