小编cos*_*ist的帖子

打印以特定字符串开头的列

我有一个看起来像这样的文件:

ID101     G    T     freq=.5     nonetype     ANC=.1     addinfor
ID102     A    T     freq=.3     ANC=.01    addinfor
ID102     A    T     freq=.01     type=1     ALT=0.022    ANC=.02    addinfor
Run Code Online (Sandbox Code Playgroud)

如您所见,每行的列数略有不同。我特别想要第 1 列、第 2 列、第 3 列、第 4 列和以ANC=

期望的输出:

ID101     G    T     freq=.5     ANC=.1
ID102     A    T     freq=.3     ANC=.01
ID102     A    T     freq=.01    ANC=.02
Run Code Online (Sandbox Code Playgroud)

我一般使用 awk 命令来解析文件:

awk 'BEGIN {OFS = "\t"} {print $1, $2, $3, $4}'
Run Code Online (Sandbox Code Playgroud)

是否有一种简单的方法可以更改此命令以适用于此类情况?

我认为这样的事情可能会奏效:

awk '{for(j=1;j<=NF;j++){if($j~/^ANC=/){print $j}}}'
Run Code Online (Sandbox Code Playgroud)

但是,如何编辑它以打印第一列?

sed awk text-processing

11
推荐指数
1
解决办法
1万
查看次数

删除包含不区分大小写匹配的行

我有一个包含以下信息的文件:

20    BaDDOg
31    baddog
42    badCAT
43    goodDoG
44    GOODcAT
Run Code Online (Sandbox Code Playgroud)

我想删除所有包含单词的行dog。这是我想要的输出:

42    badCAT
44    GOODcAT
Run Code Online (Sandbox Code Playgroud)

但是,dog大小写不敏感。

我以为我可以使用 sed command: sed -e "/dog/id" file.txt,但我似乎无法让它工作。这与我在 OSX 上工作有关吗?我可以使用其他方法吗?

grep sed awk case-sensitivity

3
推荐指数
1
解决办法
5966
查看次数

在特定字符之前删除特定列中的字符

我有一个看起来像这样的文件:

chr22   43089055    43089055    -   NM_017436   C   300 903delC
chr22   43089715-43089717   43089715-43089717   -   NM_017436   CTT 79
Run Code Online (Sandbox Code Playgroud)

我想删除第-3 列之前的所有字符,以提供如下所示的输出:

chr22   43089055    43089055    -   NM_017436   C   300 903delC
chr22   43089715-43089717   43089717    -   NM_017436   CTT 79
Run Code Online (Sandbox Code Playgroud)

awk '{$2+=0}1' file过去曾使用过删除 之后的字符-,但我不相信我可以对当前的问题使用相同的技术。有什么建议?

sed awk

2
推荐指数
1
解决办法
3249
查看次数

标签 统计

awk ×3

sed ×3

case-sensitivity ×1

grep ×1

text-processing ×1