Bymunije

3 minute read


commond


scp

1.传输文件[本地]

scp user@hostip:server_file local_path #文件
scp -r user@hostip:server_folder local_path #文件夹

awk

1.Summary

  • $0:整行
  • 从1开始计数
  • 只能有一对单引号
  • 语句结束加分号(;)
  • 注意文件保存格式在linux和window的区别

2. Note

  • BEGIN:从第一行开始
  • FS:输入字段分隔符,默认空格
  • OFS:输出字段分隔符,默认空格
  • ||/&&: 或/与
<!-- -->
cat file.txt | awk 'BEGIN {FS="\t";OFS="\t"} {if ($20 == "%" || $20 == "%%") {$23 = $14; print $0} else if ($20 != "%" && $20 != "%%") {$23 = $22; print $0}}' > file2.txt

3.保留第一行的标题

  • NR==1实现

cat file.csv | awk -F, 'NR==1;{if($9<=-5)print$0}'> select_file.csv

4.文件中添加一列一样的字符串

awk '$0=$0"\t20191027"' file.txt

5.sort排序时排除第一行

awk 'NR==1{print $0;next}{print $0 | "sort -u"}'

如果写完整应该是:

awk '{if(NR==1) {print $0;next}} {print $0 | "sort -u"}'

6.调整txt文件中列的顺序

awk '{print $2,$3,$1,$4}' OF=, OFS=, 6G.txt

7.大小写转换

awk '{print tolower($1)}' file.csv #第一列转小写 awk '{print toupper($1)}' file.csv #第一列转大写


Vim

common command

  • set list:查看分隔符
  • ctrl+v+i: vim中输入tab
  • shift+mouse:vim中复制

ps

1.查看用户所有进程

ps -aux | grep byzhang


grep

  • grep -w: 精确匹配
  • grep -v:反向选择
  • grep -i:忽略大小写

du

1.查看占用磁盘大小

du -sh

ln

  • hard link

    • 代表一个档案可以有多个名称
    • 以文件副本的形式存在,但不占用实际空间
    • 无法对目录创建
    • 只能在同一个文件系统中创建
  • symbolic link

    • 产生一个特殊的档案,档案的内容是指向另一个档案的位置
    • 以路径的形式存在,类似于windows的快捷方式
    • 可以对目录创建
    • 可以跨越不同的文件系统
    • 可以对不存在的文件名进行链接

2. 命令参数


Common Command

1.查看文件夹下文件和目录数目

文件: ls -l | grep '^-' | wc -l 目录: ls -l | grep '^d' | wc -l

2.ctrl-zctrl-cctrl-d的区别

  • ctrl-z:(suspend foreground process) 发送信号给前台进程组中的所有进程,常用于挂起一个进程,并没有结束进程,可以使用fg(前台)/bg(后台)恢复执行,对于fg恢复被挂起的进程可以使用ctrl-z再次挂起,而bg命令无法再次挂起

  • ctrl-c:(kill foreground process) 发送信号给前台进程组中的所有进程,强制终止程序的执行

  • ctrl-d:(terminate input,exit shell) 一个特殊的二进制值,表示EOF,作用相当于在终端输入exit后回车

3.Vim文件格式转换

Windows文件格式为dos,Linux文件格式为unix

  • 查看文件格式: 命令行模式输入:set ff,显示fileformat=dos

  • 转换文件格式: 1.dos_to_unix: set ff=unix 2.unix_to_dos: set ff=dos

  • 替换文件中^M符号: tr -d '\r'

  • 中文乱码: 临时方法:打开vim,输入set encoding=utf-8 一次性方法:在.vimrc文件中添加set encoding=utf-8

4.内容提取

basename: 从文件名中去除目录和后缀

  • basename kernel/include/linux/stddef.h得到stddef.h
  • basename kernel/include/linux/stddef.h .h得到stddef
  • basename kernel/include/linux/stddef.h h得到stddef.
  • basename kernel/include/linux/bsename kernel/include/linux得到linux

5.shell脚本执行显示错误bad substitution

这与shell使用的是/bin/sh,还是/bin/bash有关系


代码


1.add header

#!/bin/bash
for file in /home/usrname/data/Drug_combination/header/*.txt
do
    file_name_txt=`basename $file`
    file_name=${file_name_txt%.*}
    add_header=${file_name}_header.txt
    echo $add_header
    head -n 1 ${file} > ./header/add_header/${add_header}
done


cd /home/usrname/data/Drug_combination/header/add_header
paste SL_score_first_modify_header.txt Cancer_Mutation_Score_Modify_header.txt cancer_gene_sensus_TSG_header.txt Drug_Target_inhibitor_all_deduplication_header.txt | tr -d "\r" > add_header.txt 

#!/bin/bash
for file in ./no_header_wt/*.txt
do
     file_name=${file##.*/}
     #split_mut_wild_wt_PTGS2+TP53_Valdecoxib-341.txt
     before=${file_name%-*}
     #split_mut_wild_wt_TOP1+TP53_Topotecan
     Index_txt=${file_name##s*-}
     #split_mut_wild_wt_TOP1+TP53_Topotecan-
     Index=_${Index_txt%.*t}
     #number
     withHeader="_withHeader.txt"
     add_withHeader="$before$Index$withHeader"
     # echo ${file_name} , ${before} , ${Index} , ${add_withHeader}
    cat split_mut_wild_selected_GDSC_header.txt ${file} > ./split_every_drug_wt_withHeader/${add_withHeader}
done
comments powered by Disqus