一、如何将一个十进制的整数用2进制表示出来?

echo "obase=2;50" | bc

二、Linux下经常需要删除空白行,grep,sed,awk,tr等工具均可实现 

grep -v '^$' filename
sed '/^$/d' filename
awk '{if($0!="") print $0}' filename
tr -s '\n' < filename

三、shell中if 判断语句中的匹配模式

 =~ 表示匹配

if [[ $slave =~ "140$" ]]
then
echo "end with 140"
fi

四、awk中split的用法

 有一个文件存在两域,第一域是基因名字,第二域是别名,别名存在多个,以|分割,要求将基因名和别名一一对应,如将下图转换成下下图的结果

  

awk -F"\t" -v OFS="\t" '{if($2~/\|/){len=split($2,a,"|");for(i=1;i<=len;i++)print $1,a[i]}else print $0}' input > result
#~表示第二域匹配到|,按|分割保存到数组a
#split()返回a的长度,并遍历a
#else未匹配到|则直接输出

 五、join对两个文件相同域进行合并操作

 现在有两个文件,其中两个文件有部分相同的域,如何筛选出这些域相同的记录,如A,B文件如下图:

 从上可以看出两个文件前四行有相同的域,那么我想把这些相同域的记录筛选出来,即前四行筛选出来,该怎么做呢?注意:join操作必须按指定的域进行排过序

join -1 1 -2 4 file_one file_two
'''
1:3113245|3144862 intergenic_region 1 3113245 3144862
1:3121377|3144862 intergenic_region 1 3121377 3144862
1:3404029|3404480 intron 1 3404029 3404480
1:3420575|3421901 intron 1 3420575 3421901
''' #-1和-2指定连接的域 join -1 4 -2 1 two one
'''
1:3113245|3144862 1 3113245 3144862 intergenic_region
1:3121377|3144862 1 3121377 3144862 intergenic_region
1:3404029|3404480 1 3404029 3404480 intron
1:3420575|3421901 1 3420575 3421901 intron
'''

六、有两个关键词,如何将这两个关键词之间的行打印出来?

: comment
file:
1
2
3
3
4
5
6
7
7
8
9
10
comment #将3和7之间的行打印出来
awk '/3/,/7/{print $0}' file
'''
3
3
4
5
6
7
'''
#可见将3和7之间的行一块儿打印出来了,其中3有2行,7只打印出一行
#如果不想打印出3和7关键词行
awk '/3/,/7/{if(i>1)print x;x=$0;i++}' file
'''
3
4
5
6
''' awk '/3/,/7/{if(i>2)print x;x=$0;i++}' file
'''
4
5
6
'''

七、awk中substr()函数使用

 substr():截取字符串,返回从起始位置起,指定长度之子字符串;若未指定长度,则返回从起始位置到字符串末尾的子字符串。

 格式:

  substr(s,p) 返回字符串s中从p开始的后缀部分

  substr(s,p,n) 返回字符串s中从p开始长度为n的后缀部分

#将fastq转换为fasta
awk '{if(NR%4 == 1){print ">" substr($0, 2)}}{if(NR%4 == 2){print}}' fastq > fasta

八、有一文件

 如何根据红框中的值是否相同,将两行或者多行变成一行,GENE_ID列按逗号分隔,结果如下:

awk -F"GENE_ID=" 'BEGIN{tem=0}{split($2,array,";"); if($1!=tem){printf("\n%sGENE_ID=%s",$1,array[1]);tem=$1}else{printf(",%s",array[1])}}' paragon | sed '/^$/d'
#coding=utf-8
import sys
in_file = sys.argv[1]
#需要保存上一行的name和line
#注意输入文件bed要先排序:sort -V your_bed
name_before = ''
line_before = ''
with open(in_file) as f1:
for eachline in f1:
array = eachline.strip().split('\t')
if array[3] != name_before:
if line_before:
print line_before
gene_id = array[-1].strip().split(';')[0]
new_line = '\t'.join((array[0:-1] + [gene_id]))
name_before = array[3]
line_before = new_line else:
gene_id = array[-1].strip().split(';')[0].split('=')[-1]
line_before = line_before + ',' + gene_id #print the last line
print line_before

 九、如何提取字符串中的数字部分

 如执行上面的命令,想提取其中的数字部分:

pstree -Ap |  tr -cd "[0-9])" | sed 's/)/\n/g' | less

 -d表示删除,[0-9]表示所有数字,-c表示对条件取反,所以tr -cd "[0-9]"这句话的意思就是,剔除非数字的字符

十、一个文件vim编辑中文显示正常,more或者less显示乱码

 执行下面的命令试试:

cat data_20190306.csv | iconv -f GBK -t UTF-8 > data_20190306_new.csv

 如果vi中文乱码:

vi ~/.vimrc
#添加:set fileencodings=utf-8,gbk

 如果使用python打开文件报UnicodeDecodeError错误,则可以再linux下使用file命令,查看文件编码格式,然后open时候指定encoding参数,如:

Little-endian UTF-16 Unicode text, with CRLF, CR line terminators

说明文件是utf-16编码,并且是\n\r换行

十一、windows文件转换unix文件

 vi一个文件:

set ff?     #显示当前文件格式
set ff=unix #设置成unix格式
set ff=dos #设置成dos格式

 或者dos2unix命令,但是得先安装

shell关于文件操作的更多相关文章

  1. 让你提前知道软件开发(22):shell脚本文件操作

    文章1部分 再了解C语言 shell脚本中的文件操作 [文章摘要] 编写shell脚本时,经常会涉及到对文件的操作,比方从文件里读取一行数据.向文件追加一行数据等. 完毕文件读写操作的方法有非常多,了 ...

  2. Shell脚本文件操作

    Linux Shell http://baike.baidu.com/link?url=2LxUhKzlh5xBUgQrS0JEc61xi761nvCS7SHJsa1U1SkVbw3CC869AoUC ...

  3. Java文件操作API功能与Windows DOS命令和Linux Shell 命令类比

    Java文件操作API功能与Windows DOS命令和Linux Shell 命令类比: Unix/Linux (Bash) Windows(MS-DOS) Java 进入目录 cd cd - 创建 ...

  4. Linux文件操作的主要接口API及相关细节

    操作系统API: 1.API是一些函数,这些函数是由linux系统提供支持的,由应用层程序来使用,应用层程序通过调用API来调用操作系统中的各种功能,来干活 文件操作的一般步骤: 1.在linux系统 ...

  5. python 文件操作(转)

    python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 返回指定目录下的所有文件和目 ...

  6. python文件操作

    总是记不住API.昨晚写的时候用到了这些,但是没记住,于是就索性整理一下吧: python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Pyth ...

  7. Python之路第一课Day3--随堂笔记(文件操作)

    一.集合的介绍 1.集合操作 集合是一个无序的,不重复的数据组合,它的主要作用如下: 去重,把一个列表变成集合,就自动去重了 关系测试,测试两组数据之前的交集.差集.并集等关系 常用操作 s = se ...

  8. 关于Python中的文件操作(转)

    总是记不住API.昨晚写的时候用到了这些,但是没记住,于是就索性整理一下吧: python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Pyth ...

  9. 关于python文件操作

    http://www.cnblogs.com/rollenholt/archive/2012/04/23/2466179.html 总是记不住API.昨晚写的时候用到了这些,但是没记住,于是就索性整理 ...

随机推荐

  1. nginx POSTREAD阶段模块

    L:50 Realip模块 需要将--with-http_realip_model 编译进Nginx 因为nginx有可能有反向代理 获取到的客户端ip就不是原用户IP了 X-Forwarded-Fo ...

  2. 下载模板、Excel导入、导出

    下载模板 /// <summary> /// 下载模板 /// </summary> /// <returns></returns> public Ac ...

  3. BZOJ3724PA2014Final Krolestwo——欧拉回路+构造

    题目描述 你有一个无向连通图,边的总数为偶数.设图中有k个奇点(度数为奇数的点),你需要把它们配成k/2个点对(显然k被2整除).对于每个点对(u,v),你需要用一条长度为偶数(假设每条边长度为1)的 ...

  4. Redis——windows下如何连接Linux(centos7.x)虚拟机的Redis——【二】

    我的虚拟网络使用的是桥接网络和windows主机IP为同一网段,做下面步骤之前请确保网络通畅. 使用cmd的ping来测试 软件 https://redisdesktop.com/download 下 ...

  5. ajax 提交数组 泛型集合(嵌套集合)

    直接上代码 后台接口: A类型中嵌套了 List<B> B类型中嵌套了 List<C> [HttpPost] public string Post(A a) { return ...

  6. Django media 配置

    Django  media 配置 settings.py 配置  配置 media 的路径, 以及连接到主路径 还要添加一个 上下文管理 TEMPLATES = [ { 'BACKEND': 'dja ...

  7. PHP获取网络图片并保存在本地目录

    PHP获取网络图片并保存在本地目录思路: 代码如下: function file_exists_S3($url) { $state = @file_get_contents($url,0,null,0 ...

  8. AtCoder 瞎做

    目录 ARC 058 E - 和風いろはちゃん / Iroha and Haiku 题意 题解 技巧 代码 ARC 059 F - バイナリハック / Unhappy Hacking 题意 题解 技巧 ...

  9. 区块链使用Java,以太坊 Ethereum, web3j, Spring Boot

    Blockchain is one of the buzzwords in IT world during some last months. This term is related to cryp ...

  10. apache StringUtils 工具类

    // org.apache.commons.lang3.StringUtils // 1.IsEmpty/IsBlank - checks if a String contains text 检查是否 ...