如何从bash

如何解决如何从bash?

开发过程中遇到如何从bash的问题如何解决?下面主要结合日常开发的经验,给出你关于如何从bash的解决方法建议,希望对你解决如何从bash有所启发或帮助;

问题描述

我正在做一个项目,该项目要求我输入一些 .bed,从每个文件提取一列,仅获取某些参数并计算每个文件有多少个参数。我对 bash 非常缺乏经验,所以我不知道大部分命令。但是有了这行代码,它应该可以解决问题

for file in *; do cat $file | awk '$9>1.3'| wc -l ; done>/home/parallels/Desktop/EP_Cell_Type.xls

我将这些值保存在 .xls 中,因为我需要用它们做一些图表。 现在我想用 -ls 获取文件名并将它们保存在我的 .xls 的第一列中,而我的参数应该在我的 excel 文件的第二列中。 我设法使用以下命令将所有内容保存在一列中:

ls>/home/parallels/Desktop/EP_Cell_Type.xls | for file in *; do cat $file | awk '$9>1.3'-x| wc -l ; done >>/home/parallels/Desktop/EP_Cell_Type.xls

我的示例文件是:A549.bed、GM12878.bed、H1.bed、HeLa-S3.bed、HepG2.bed、Ishikawa.bed、K562.bed、MCF-7.bed、SK-N-SH。床并包含在仅包含这些文件文件夹中。

输出是所有文件名和同一列上的值的列表,如下所示:

第 1 列
A549.床
GM12878.bed
H1.床
HeLa-S3.bed
HepG2.bed
石川床
K562.床
MCF-7.bed
SK-N-SH.bed
4536
8846
6754
14880
25440
14905
22721
8760
28286

但我需要的应该是这样的:

文件 #BS
A549.床 4536
GM12878.bed 8846
H1.床 6754
HeLa-S3.bed 14880
HepG2.bed 25440
石川床 14905
K562.床 22721
MCF-7.bed 8760
SK-N-SH.bed 28286

解决方法

假设 OP 的 awk 程序(正确地)找到了所有需要的行,一个更简单(更快)的解决方案可以完全用 awk 编写。

跟踪匹配行数然后打印文件名和行数的 awk 解决方案:

awk '
FNR==1 { if ( count >= 1 )                       # first line of new file? if line counter > 0
             printf "%s\t%d\n",prevFN,count   # then print previous FILENAME + tab + line count
         count=0                                # then reset our line counter
         prevFN=FILENAME                        # and save the current FILENAME for later printing
       }

$9>1.3 { count++ }                              # if field #9 > 1.3 then increment line counter

END    { if ( count >= 1 )                       # flush last FILENAME/line counter to stdout
             printf "%s\t%d\n",count
       }
' *                                             # * ==> pass all files as input to awk

出于测试目的,我将 $9>1.3 替换为 /do/(匹配包含字符串 'do' 的任何行)并针对包含各种脚本和数据文件的目录运行。这生成了以下制表符分隔的输出:

bigfile.txt     7
blocker_tree.sql        4
git.bash        2
hist.bash       4
host.bash       2
lines.awk       2
local.sh        3
multi_file.awk  2

编程问答问答

如何将逗号分隔的字符串转换为 Python 中的列表?
对静态 constexpr char[] 的未定义引用
如何获取切片的最后一个元素?
使用正则表达式解析 HTML:为什么不呢?
Composer:如何在不更新旧依赖项的情况下安装另一个依赖项?
pip:强制安装忽略依赖项
我如何 Docker COPY 作为非 root 用户?
存储更改,同时将更改保留在 Git 的工作目录中
微信公众号搜索 “ 程序精选 ” ,选择关注!
微信公众号搜 "程序精选"关注