把当前文件夹的文件名用","连接成一行,或者将多行转变为一行

ls | paste -s -d ","  # -s 选项将输入进行一次性粘贴
ls | xargs | sed 's/ /,/g' #xargs 将输入作为参数(空格分隔)传入
ls | awk '{printf "%s,",$0}'

将行逆序输出

sed '1!G;h;$!d'file  # 1!G 第一行不执行G命令,从第二行开始执行;$!d 最后一行不删除;第一行自动存入模式空间,将模式空间内容(第一行)放到保持空间(h),然后删除模式空间内容(d,否则它会自动输出),第二行自动存入模式空间,(开始用G)将保持空间(第一行内容)接到模式空间(第二行)后,将当前模式空间(第二行+第一行)放到保持空间(h),然后删除当前模式空间(d),依次类推,最后一行不删除模式空间,再自动输出模式空间内容
tac file

删除#开头的注释行

sed '/^#.*/d' test.txt

去掉每行开头4个字符

cut -c 4- test.csv

对文件第一列进行统计

awk -F "," '{count[$1]++} END{for (record in count) print record,count[record] }' test.csv  #count[$1]++创建关联数组count[$1]并进行计数

对文件第四列用":"切割成两列并将最后一列结果+1,然后输出全部列

awk -F "," '{split($4,array,":");print $1,$2,$3,array[1],array[2]+1}' test.csv  #split切割$4存到数组array中,array[1]和arrya[2]即为切割后的两个区域

对文件第二列求均值

awk -F "," '{sum+=$2} END {print "Average = ", sum/NR}' test.csv

实现DNA序列反向互补

cat seq.txt | sed 'y/ATGC/TACG/' |rev

某一行插入另外一个文件的内容

sed '2 r a.txt' test.csv

对一个文件按照第一列进行筛选,筛选条件是必须在另外一个文件的第一列出现过

awk -F "," '{if(NR==FNR){count[$1]=1}else if(count[$1]==1){print $0}}' chr.txt test.csv  #将第一个文件第一列的值存入关联数组,并给值为1,如果第二个文件建立的关联数组对应值为1,说明在第一个文件第一列出现过,则输出整行

对文件第二列和第三列进行展开

展开前四列



展开后成为三列

awk -F "," '{for (i=$2;i<=$3;i++) {print $1,i,$4}}'  test.csv

对三个文件依次merge

  这里三个文件行数相等,其中ampl列将新的和旧的染色体、位置联系起来,第一个文件将第五列(ampl列,值为ampl1,ampl2...)存入一二三列(旧染色体,旧起始位置,旧结束位置)为下标的关联数组ampl,第二个文件按照一二三列(旧染色体,旧起始位置,旧结束位置)取出关联数组的值(ampl1,ampl2...),将关联数组的值作为关联数组下标新创建关联数组Ampl,将第二个文件的值(1,2,3,4,5列,其中4、5列是我们要的信息)用sprintf生成字符串存入Ampl,第三文件按照第四列(ampl1,ampl2...),用split切割sprintf生成的字符串,取出第二个文件存入的值(这里只取出了需要的4,5列,123列的值输出第三个文件的123列(新染色体,新起始位置,新结束位置)的值)。这样Oldpanel_start_end.sort.bed 对应的旧的染色体和位置,被hg38amplicon_start_end.bed新的一个染色体和位置取代,并且将旧文件染色体和位置在amplGChg19.txt 对应的信息成功转移到新生成的新位置文件中

awk 'BEGIN{FS="\t";OFS="\t"}{if(NR==FNR){ampl[$1,$2,$3]=$5;N=NR}else if(NR<=2*N){Ampl[ampl[$1,$2,$3]]=sprintf("%s,%d,%d,%s,%s",$1,$2,$3,$4,$5);}else{split(Ampl[$4],array,",");print $1,$2,$3,array[4],array[5],$4}}' Oldpanel_start_end.sort.bed amplGChg19.txt hg38amplicon_start_end.bed | sort -k1 > hg38amplicon_Gene_GC.txt

对两个文件去重取并集

cat NewpanelGene.bed Oldpanel.gene.bed | sort -u > merge.gene.bed  #sort -u = sort | uniq ,相当于sort 之后,将重复相邻行变成只有一行

对文件按照标志开头的行进行分割

比如

 awk '/>chr/{split($0,array,">");out=array[2]};{print > out}' test.fa

输出chr1,chr2两个文件

输出文件奇数行和偶数行

sed -n 'p;n' test.txt #输出奇数行
sed -n 'n;p' test.txt #输出偶数行

统计GC含量

echo "TTCCTTGAAATAAGTGTGATT" | awk '{s=gsub("[GC]","N",$0);print s/length}'

去除windows换行符

cat test.txt | sed 's/\r//g'

linux 的一些脑洞操作的更多相关文章

  1. 让linux好用起来--操作使用技巧

    让linux好用起来--操作使用技巧 1   概述 在一个初学者眼里,linux的 CLI 界面没有图形界面那样多彩和友好,会让人产生畏难心理,但是作为一个稍微进阶的linux玩家,自然会积累不少经验 ...

  2. Linux Shell数组常用操作详解

    Linux Shell数组常用操作详解 1数组定义: declare -a 数组名 数组名=(元素1 元素2 元素3 ) declare -a array array=( ) 数组用小括号括起,数组元 ...

  3. Linux 基本概念和操作2

    接着上一篇 "Linux 基本概念和操作" 1.删除文件 有时候我们想要删除的文件是只读文件,直接使用rm 文件名,会报错.这时使用" -f " 参数强制删除. ...

  4. SLAM+语音机器人DIY系列:(一)Linux基础——3.Linux命令行基础操作

    摘要 由于机器人SLAM.自动导航.语音交互这一系列算法都在机器人操作系统ROS中有很好的支持,所以后续的章节中都会使用ROS来组织构建代码:而ROS又是安装在Linux发行版ubuntu系统之上的, ...

  5. linux下的shell操作mysql

    (1)MySQL的启动 重启了一次服务器后,使用> mysql -u root -p登陆是出现下面的错误: ERROR 2002 (HY000): Can't connect to local ...

  6. Linux的date常用操作

    Linux的date常用操作 ## 在指定的日期上减1天 $ date -d "2012-04-10 -1 day " +%Y-%m-%d 2012-04-09 ## 在指定的日期 ...

  7. 如何记录linux终端下的操作日志

    如何记录linux终端下的操作日志 在linux终端下,为方便检查操作中可能出现的错误,以及避免屏幕滚屏的限制,我们可以把操作日志记录下来.常用的工具有 screen,script,以及tee等,通过 ...

  8. Linux查看版本当前操作系统内核信息

    1. # uname -a (Linux查看版本当前操作系统内核信息) 输出 Linux xxx --generic #~-Ubuntu SMP Wed Jul :: UTC x86_64 x86_6 ...

  9. linux下的文本操作之 文本查找——grep

    摘要:你有没有这样的应用场景:调试一个程序,出现debug的提示信息,现在你需要定位是哪个文件包含了这个debug信息,也就是说,你需要在一个目录下的多个文件(可能包含子目录)中查找某个字符串的位置: ...

随机推荐

  1. java之真假分页

    真分页(要的是什么范围的记录在数据库查的时候就只查这几条记录):select s.* from (select *,row_number() over(order by SLoginId) as ro ...

  2. angular嵌入注入服务实例

    <!DOCTYPE html> <html lang="en" ng-app="myapp"> <head> <met ...

  3. 基于Petri网的工作流分析和移植

    基于Petri网的工作流分析和移植 一.前言 在实际应用场景,包括PEC的订单流程从下订单到订单派送一直到订单完成都是按照一系列预先规定好的工作流策略进行的. 通常情况下如果是采用面向过程的编程方法, ...

  4. Mac下终端配置(item2 + oh-my-zsh + solarized配色方案)

    最近重装了系统,于是便重新配置了一下终端,使其更符合用户习惯. 效果如下: 拥有语法高亮,命令行tab补全,自动提示符,显示Git仓库状态等功能. 安装 首先我们下载的 iTem2 这个软件,比Mac ...

  5. 使用ABP打造SAAS系统(1)——环境准备

    一.前言 使用ABP也有一段时间了,很多东西是懂非懂,打算试着使用abp来搭建一套SAAS系统,与实际项目相互验证. 主要实现以下目标: 将ABP源码与实际项目相结合,后续可以修改相关源码来支持项目, ...

  6. Oracle数据库ora-01722 错误小记

    今天遇到个关联查询的错误,特搜索了下记录下来. 因为做视图查询的表是以前建立的,所以有个字段类型应该只实用于当时.看SQL: select x.参数1 , y.参数2 from t_fac_info ...

  7. 针对Oracle数据库表中的数据的常见操作

    1.查询表中所有数据 select * from 表名; 例:select * from stu; 2.查询的同时修改表中数据 select * from 表名  for update; 例:sele ...

  8. 【Android Developers Training】 35. 序言:分享文件

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  9. 4.如何实现用MTQQ通过服务器实现订阅者和发布者的通讯

    1.本例子意在用moquette服务器来作为消息转发,通过订阅者订阅消息,发布者发布消息,然后发布者的消息可以通过服务器转发给订阅者 服务器例子: https://github.com/andsel/ ...

  10. 类间调用inline函数的效率

    问题描述: class A { public: int x, y, k, NY; inline int f(int i, int j, int k)  {return ((i)*(NY + 1) * ...