我在目录中有大约175个标签分隔的txt文件。我对第一列感兴趣,我想从每个文件的第一列中删除所有重复的项,然后将它们打印为一个新的txt文件中的列。
#this removes all duplicates in column 1 of myFile.txt
awk '!x[$1]++' myFile.txt
#this copies all coulmn 1 from every file and paste them as columns in a new file
#!/bin/bash
OUT=AllColumns.tsv
touch $OUT
for fil
我看到了这个问题,我想做一些类似的事情:如果列中的值发生更改,则打印行
实际上,我将有一个(制表符分隔的)文件,如下所示
A 0 10 loss
A 10 20 loss
A 20 30 loss
A 30 40 no
A 40 50 no
A 50 60 no
A 60 70 no
A 70 80 gain
...
我想打印第4列更改为(例如)的两行“损失”-> "no“或"no”->“增益”,因此输出将是
A 20 30 loss
A 30 40 no
A 60 70 no
A 70 80 gain
列4中的值可以是任何值,但是我想要打印两行来表示更改。
这看起
我有两个这样的专栏:
(A) (B)
Adam 30
Jon 55
Robert 35
Jokim 99
Adam 32
Adam 31
Jokim 88
我想要一个AWK脚本检查A列中的Adam(或任何名称)是否变成B列中的30,然后从A列中删除所有Adam名称,这并不重要,亚当是31岁还是32岁,然后打印结果。
实际上,我有一个日志列表,我不希望代码依赖于"Adam“。所以,我想要的基本上是在$2中存在30的地方,所以删除$1中相应的值,并在$1中搜索所有与已删除的值相同的值。
我试图打印所有从文件1+第3列从文件2,如果第一列在两个文件匹配,但第3列不匹配。
示例:
File1
John 12 Mango
David 13 Apple
Jack 14 Orange
File2
John 12 Grape
David 13 Apple
Jack 14 Apple
输出
John 12 Mango Grape
Jack 14 Orange Apple
我尝试了不同的awk命令,但它们在两列匹配时都能工作,但我需要在只有1列匹配而其他不匹配的情况下打印。我对脚本和Unix命令相当陌生,我希望对建议的解决方案几乎没
如何将打印输出的数据保存在awk语句中?为了能够在变量或数组中访问?它通过的每个文件都有4个值(GATC),以及所有这些值的总和。它迭代并打印每一行,如果找到符合条件的文件,则添加找到的每一行的数量,总共四行。不过,我稍后需要访问这些信息。不一定是它找到的行,我不需要它。如何才能保存到一个我认为是最好的方法的数组中?
for f in $FILES
do
[ -d "$f" ] && continue
if is_file_contains_DNA $f; then
echo "DNA exist in
我有一个脚本,它在一周内运行了几百万次,它只是在一个名为file.csv的CSV文件中找到与$word完全匹配的第一个单元格,并打印整行内容,例如CSV:
robot@mechanical@a machine that does automated work
fish@animal@an animal that lives in the sea
tree@plant@a plant that grows in the forest
如果搜索"tree",则会打印以下内容:
tree@plant@a plant that grows in the forest
这两种方法得到相同
我有两个文件。
档案1:
SNP Allele1 Allele2 Effect StdErr PVAL Direction HetISq HetChiSHetDf HetPVal
rs12266638 t g 0.4259 0.0838 3.776e-07 +? 0.0 0.000 0 1
rs7995014 t c 2.2910 0.5012 4.853e-06 +? 0.0 0.000 0 1
档案2:
Chromosome Position SNP EA NEA EAF BETA SE P Direction
我有两个不同的文件,大约有1000行,每个文件的结构如下:
file1:(名;姓;地址)
Mike;Tyson;First Street 2
Tom;Boyden;Second Street 6
Tom;Cruise;Third Street 9
Mike;Myers;Second Street 4
file2:(姓姓;电子邮件;ID)或(姓氏名;电子邮件;ID)
Mike Tyson;mike@tyson.com;45753
Cruise Tom;tom@cruise.com;23562
Jennifer Lopez;jennifer@lopez.com;92746
Brady Tom;to
我对linux/bash相当陌生,而且我在从文本文件中的特定列中打印两个值(最高值和最低值)时遇到了困难。文件的格式如下:
Geoff Audi 2:22:35.227
Bob Mercedes 1:24:22.338
Derek Jaguar 1:19:77.693
Dave Ferrari 1:08:22.921
正如您可以看到的,最后一列是一个计时,我试图使用awk打印出列中的最高和最低的时间。我真的很困惑,我试过:
awk '{print sort -n
对于常用的bash工具,使用MySQL命令很容易将一个大文件(在我的例子中是一个split转储,因此是一个TSV文件)分割成较小的部分。此外,此命令支持在n新行(即-l参数)之后分割文件。但是,此命令不区分转义字符和未转义换行符,因此可能将单个表行拆分为两个不完整的部分。
示例(TSV有2列)
cool 2014-12-15 17:31:00
do not censor it ...^M\\n 2016-01-24 22:33:00
watch out ari, you've got compeition! hahah 2001-12-05 19:11:01
O
我想打印整行与特定的列开始计数变量的文本。
file.log format
1 101010 101010 4.0001 my home
2 101010 101010 5.0001 my home
3 101010 101010 6.0001 my home
4 101010 101010 7.0001 my home
my script
count=4
awk -v cnt="$count" '$4 ~ /^[cnt]\./' file.log
我要这个结果。
1 101010 101010 4.0001 my home
,,但我的结果没什么.
请告诉我我
在awk中,如何计算一个单词在数组的两列内出现了多少次?(同一个词可以出现在任何一列上,但我需要两者都加一)。然后,我需要打印每个单词出现的次数。例如,它的一部分可能是:
Sarah Jenny
Carlos Javi
Jenny Mark
Calab Charles
Charles Jenny
我需要打印出来
Sarah 1
Jenny 3
Carlos 1
Javi 1
Mark 1
Charles 2