Awk:删除有条件的重复行

我有一个以制表符分隔的文本文件,有8列: Erythropoietin Receptor Integrin Beta 4 11.7 9.7 164 195 19 3.2 Erythropoietin Receptor Receptor Tyrosine Phosphatase F 10.8 2.6 97 107 15 3.2 Erythropoietin Receptor Leukemia Inhibitory Factor Receptor 12.0 3.6 171 4

AWK-仅打印副本

我有一个文件: jeden dwa jeden trzy trzy cztery piec jeden 此命令打印出: $ awk 'BEGIN {while ((getline < "file") > 0) if(a[$0]++) print }' jeden trzy jeden 编辑: 我找到了一个有效的例子 awk '{if (x[$1]) { x_count[$1]++; print $0; if (x_count[$1] == 1) { print x[$1] } }

使用awk查找更大的数字

我很难确定当前行号是否大于下一行,然后它应该打印类似于“数字53大于23”的内容,然后比较下两行“数字54小于76”。我在想NR%2的事情,但不确定之后该怎么办。任何关于如何完成这项工作的提示或建议都将不胜感激 此文件的一个示例是: 53 23 54 76 12 42 预期结果 the number 53 is greater than 23 the number 54 is less than 76 the number 12 is less than 42 这就是你想要的: awk '

awk行处理$NF

我对awk处理简单的事情有问题。 但对我来说并不简单明了。 这就是我需要解析的内容: $ cat file /dir1/dir11/file1 /dir10/dir103/file2 /dir2/dir21/dir221/file3 我想要的是,有单独的文件路径(没有文件名),比如: 我已经试过了: $ cat file | awk -F"/" '{for (i=1;i<NF;i++) print $i}' dir1 dir11 dir10 dir103 dir2 dir21 di

Awk 添加不同列中的值,然后按顺序排列

我正在努力实现以下目标,但我对编程这个话题完全陌生,而且我越来越疯狂。我见过许多例子,其中解释了如何求一列或几列的和,但从未解释过如何从同一行添加值。我试着用awk命令做一些事情,但完全没有用 我有以下意见: 10000 4.32078125e-05 2.319742728e-05 -1.626118465e-06 2.116442767e-05 2.824876608e-06 -2.008498137e-07 1.378852315e-11 -2.461344776e-11 -1.1853

Awk Shell脚本并在分隔文件中添加大值

我有一个脚本,它读取一个带分隔符的文件,并为每个记录将文件中的第三个元素相加。对于大多数数据文件,除一个文件外,其他文件都可以正常工作。我有一个数据文件,数据文件中有193条记录。我希望从脚本中获得2028219.43。取而代之的是,我得到了一个指数,它似乎已经被四舍五入了。起初,我认为使用printf可以得到数字,但如果数字已经四舍五入,那么它就不会返回我所期望的结果 这是我用来读取分隔数据文件的代码。每条记录中的数据由* export clm_total=$( awk -F* '{f1+=$

使用awk对列中的值求和

嗨,我有一个文件,看起来像这样: AAAA 5 BBBB 4 CCCC 12 ... AAAA 5 0.2380 BBBB 4 0.1904 CCCC 12 0.5714 (文件以制表符分隔,有1000多行) 我感兴趣的是对第二列值求和,这是直截了当的: awk '{sum +=$2}END{print sum}' 对于这3行,其值为21。我要做的是首先对文件中的所有第二列求和,然后打印col1,col2,col2/sum。因此,输出将如下所示: AAAA 5 BBBB 4 CC

Sed或awk。在两个字符串之间查找文本+;和附加标识符

我希望搜索一个文件并从两个字符串之间提取数据。我可以用sed确定这一点。但我也需要它来只提取特定领域的信息。例如: 2015-04-29T08:05:24.668345-04:00 test1 [S=4444] [SID:1630710955] HOOK_EV ---SYSLOG DATA 2015-04-29T08:05:24.668345-04:00 test1 [S=4445] [SID:1630710956] 2015-04-29T08:05:24.668345-04:00 test1

如何通过awk从一个文件中并排列的多个文件中输出数据?

我有30个文件,叫做UE1.dat,UE2.dat。。。。每列中有4列。下面给出了UE1.dat和UE2.dat的柱结构示例 UE1.dat 1 4 2 1 2 2 3 3 3 2 4 4 4 4 4 2 UE2.dat 2 6 8 7 4 4 9 6 7 1 1 2 9 3 3 3 因此,我尝试了以下代码: for((i=1;i UE_all.dat 要仅从每个文件中获取第一列并将其写入单个文件和并排的列,下面给出了所需的输出 1 2 2 4 3 7 4 9 但不幸的是,

awk FIELDWIDTHS是如何工作的

几天前我开始学习awk编程(有效的awk脚本)。在第102页,作者解释了字段宽度,但我不明白它是如何工作的。请有人能给我解释一下fieldwidths是如何工作的吗 字段宽度以空格分隔的字段宽度列表。设定时, gawk将输入解析为固定宽度的字段,而不是使用 FS变量的值作为字段分隔符 我认为最好用一个例子来解释它是如何工作的: $ echo "aaabbbbcccccdddddd"|awk -v FIELDWIDTHS="3 4 5 6" '{for(i=1;i<=NF;i++)print

Grep/Awk:从表列查找状态

dokku ls显示了以下内容,但如何使用awk获取app-1470418443的状态 因此,magic命令返回running -----> App Name Container Type Container Id Status app-1470418443 web 78a092d176f1 r

使用awk如何组合两个文件中的数据并将第二个文件中的值替换为第一个文件?

如何使用awk进行以下操作 两个输入文件data.txt和keys.txt: data.txt包含一些数据: A;1 B;2 A;3 keys.txt包含“key;value”对(“在本例中,C”不是data.txt的一部分,但awk脚本仍应工作): 输出应如下所示: A;1;30 B;2;20 A;3;30 因此,data.txt中包含keys.txt中任何键的每一行都应获得附加到data.txt中该行的相应值。awk解决方案: awk -F';' 'NR==FNR{a[$1]=$2; n

如何在awk中编写循环而不相互影响?

我的脚本输出一个包含价格(col$3)的杂货清单(col$1) 然后按类别(第2列)将它们合并,并添加每个类别的成本 问题是,当我运行for循环时,它总是只会弄乱原始杂货清单输出的第一行。 我试着用不同的开头和结尾来分开它们,但没有用 这是我当前的代码,带有子类别的循环被注释掉了 #!/bin/awk BEGIN { FS="\t+"; OFS=" "; printf("%-30s %s\n", "Item","Cost") printf("%-30s %s\n", "====

Awk 求和列和计数行

我试图求第2列中的某些数字的和,这与我的代码是一致的。但我还想计算第2列中相同值的重复次数,并在最后一列中打印 file1 36 2605 1 2 36 2605 1 2 36 2603 1 2 36 2605 1 2 36 2605 1 2 36 2605 1 2 36 2606 1 2 所需输出 2603 36 1 2 1 2605 180 5 10 5 2606 36 1 2 1 awk '{a[$2]+=$1}{b[$2]+=$3}{c[$2]+=$4;coun

Awk 将字段分隔符括在引号中

我们使用oracle的sqlldr加载由第三方创建的数据文件。数据文件大小不同,有些文件非常大 数据文件的字段由分隔符分隔| 示例:字段1 |字段2 |字段3 |字段4 |字段5 字段3可以是: 空的 单值 值1 |值2 |值3 如果字段3包含|,我需要用引号将其括起来 我已经制作了一个shell脚本来实现这一点,但是它有点慢——处理一个47000000行的文件大约需要16分钟 我想用awk来做,但我对语法不太熟悉,而且最后期限不允许学习/开发/调试 在awk中是否会明显更快 有简单的方法吗 感

如何使用vim命令或sed/awk命令将不同列数的行分隔到另一个文件中?

我有一个数据文件,其中有些行有15列,而有些行有9列。我需要把这个文件分成两个文件。一个文件包含9列的行,另一个文件包含15列的行。有人能帮我做这件事吗。我尝试了一些“awk”命令,但没有成功。我在这里附上了我的数据文件的图像。没有查看您的数据 awk'{print>(文件名“.NF”)填充 将创建两个新文件,infle.9和infle.15(如果有不同字段数的记录,则创建更多文件) FILENAME是一个包含当前文件名的awk内置变量 NF是一个awk内置变量,保存当前记录中的字段数 aw

Awk 无循环提取多个列

我正在编写一个awk脚本,它将获取grep的输出并将其很好地格式化为HTML表。分隔符是“:”字符;我遇到的问题是,这个字符也可以出现在文本中。因此,如果我只是分别使用$1、$2和$3作为文件名、行号和注释,那么在注释中,在第一个之后我会丢失任何东西 有没有一种方法可以说$1、$2,然后是$3..NR,而不显式地在列上循环并将它们连接在一起 以下是目前为止的脚本: ` 开始{FS=“:”OFS=“:”} {name=$1;number=$2;$1=“”;$2=“”;comment=substr(

awk-如何将字段分隔符指定为二进制值0x1

是否可以为awk指定二进制分隔符字段FS 我有一个带有ascii数据字段的数据文件,但由二进制分隔符0x1分隔 #!/bin/awk -f BEGIN { FS = "\x01" } /FIELD/ { print $1 } 如果它是字符'1',它将如下所示: awk -F1 '/FIELD/ { print $1 }' 或以脚本形式: #!/bin/awk -f BEGIN { FS = "1" } /FIELD/ { print $1 } 如何将FS/F指定为0x1 #!/bi

在awk中连接字符串

我有一个需要在服务器上“重播”的日志文件 它包含如下条目: Request: query: EXEC prc_insert_customer @param0: 110040851 @param1: 137463 @param2: user@example.com @param3: John @param4: Smith @param5: Some address @pa

Awk 拆分一列的内容并复制另一列

我有一个这样结构的文件(太大了) A B C,D,E,F 第三列包含4个值(但可以是变量),用逗号分隔。我想把那个文件转换成 A B C A B D A B E A B F 基本上是复制前两个并将第二个拆分为行 你知道如何在awk中这样做吗?$awk'{n=split($3,a,/,/);for(i=1;i) $ awk '{n=split($3,a,/,/);for(i=1;i<=n;i++)print $1,$2,a[i]}' file A B C A B D A B E A B

awk/grep特定列的某些部分

我有一个问题不知道该怎么解决。 我有3列选项卡分隔的数据,例如: abs nmod+n+n-commitment-n 349.200023 abs nmod+n+n-a-commitment-n 333.306429 abs into+ns-j+vn-pass-rb-divide-v 295.57316 abs nmod+n+ns-commitment-n 182.085018 abs nmod+n+n-pledge-n 149.927391 abs nmod+n+ns-reage

Awk 在单独的文件中匹配数据

我似乎有几个这样的问题,我真的试图自己解决,但没有成功 我有两个数据文件;我想比较它们的第一个字段,并打印输出文件中第一个文件中匹配条目旁边的第二个文件中的行。维护文件1中的列表顺序很重要,包括不匹配的行。这些文件是以制表符分隔的值,但如果需要,我可以更改它们(尽管数据中使用逗号) file1.txt 37600 39219 32887 01262 69241 00361 34180 42385 69245 file2.txt 37600 GEAR PUMP 1 32887

Awk 基于file2将名称添加到file1

我有两个文件file1和file2。文件2中的某些名称不在文件1中。我想在文件1中添加这些名称 文件1 文件2 我想要的输出如下所示 anna 14/2 = 7.0 alex 23/6 = 3.8 benny 0/0 = 0 cathar 0/0 = 0 deffy 27/3 = 9.0 hobert 24/9 = 2.7 sam 0/0

Awk 比较两个文件并打印可用和未找到

我想比较F11.txt中的第二个字段和F22.txt中的第一个字段。然后,将匹配的案例打印为“可用”,将不匹配的案例打印为“未找到” 投入: F11.txt a,10,zzz b,20,zzz c,50,zzz F22.txt 10,yyy 20,yyy 30,yyy 40,yyy 已经尝试了下面的命令 awk -F "," 'NR==FNR{a[$1]=$0;next}{print $0 "," (a[$2]?a[$2]:"NotFound") }' f22.txt f11.txt 获

使用AWK打印文件夹中每个文件的计数

我有一个包含100多个.gz文件的文件夹。我需要得到如下输出: file name : Count 例如: cde.gz:123456 test.gz:456896要计算当前目录中每个文件的行数,可以执行以下操作 wc -l * 以上内容将为存在的任何子目录生成警告。要避免这些警告,可以使用find命令,如: find . -maxdepth 1 -type f -exec wc -l {} + 当然,以上内容将按原样计算文件中的行数。如果文件已压缩,并且需要其包含的未压缩文件的行数,则可

Awk 2个文件中的多列并输出匹配行

我有两个输入文件,如下所示 x、 文本 文件2y.txt scaffold4557 hsal_OGSv3.3 gene 3097 4624 74.8 + . ID=HSAL10661-RA;Parent=HSAL10661;Name=HSAL10661-RA;Alias=Hsal_17580--XP_001599845.1_NASVI C20775336 maker gene 1895 1962 .

重复awk中的格式说明符

我正在尝试格式化AWK的printf()函数的输出。更准确地说,我正在尝试打印一个包含很长行的矩阵,我想将它们包装起来,然后继续下一行。我想做的是用Fortran语言最好地说明。考虑下面的FORTRAN语句: write(*,'(10I5)')(i,i=1,100) 输出将是1:100范围内的整数,打印成10个元素的行 在AWK中也可以这样做吗。我可以通过偏移索引并用“\n”打印到新行来完成此操作。问题是这是否可以像Fortran那样优雅地完成 谢谢 正如评论中所建议的那样,我想解释一下我的

Awk 在文本文件中打印包含相同第二个字段的行3次以上

这就是我正在做的 文本文件以逗号分隔,有三个字段, 我想提取包含相同第二个字段的所有行 三次以上 文本文件(文件名为“Text”): 我的命令如下。用每行的第二个字段在awk和grep中键入整个文本文件,并计算行号。 如果行数大于2,则打印整行 命令: awk -F "," '{ "cat text | grep "$2 " | wc -l" | getline var; if ( 2 < var ) print $0}' text 我的预期结果: 11,keyword1,content

使用awk从文件中分离数字范围

我有一个包含5列的文件,我想使用数字范围作为标准来分隔列:示例: chr1 2120987 2144159 NM_001282670 0.48106 chr1 2123333 2126214 NM_001256946 2.71647 chr1 4715104 4837854 NM_001042478 0 chr1 4715104 4843851 NM_018836 0 chr1 3728644 3773797

在awk中找到值时如何增加计数器

我正在尝试写一个awk脚本。部分代码需要计算$10(在其256以下的代码中)是某个值的次数。 可能性是4、8、16、32、64、128、256 每次出现这些值中的一个时,我都希望相应的变量递增一 我的代码块是 { if ($10 == "4") {bs_4k++} else if ($10 == "8") {bs_8k++} if ($10 == "16") {bs_16k++} if ($10 == "32") {bs_32k++} if ($10 == "64") {bs_64k++} i

awk使用另一个文件中的特定字段查找值

我正在尝试使用awk查找file2中$2和file1中$3之间的所有$3值。如果file2的$3中的值在file1字段之间,则它将与file1中的$6值一起打印。file1和file2都是制表符分隔的以及所需的输出。如果没有要打印的内容,则处理下一行。下面的awk很接近,但使用我的实际~30MB文件,它处理速度很慢,并以意外的格式打印。我也不知道如何调整。谢谢:) file1 chr1 948953 948956 chr1:948953-948956 . ISG15 chr1

Awk拆分字符串并进行比较

我有一个类似于AS | REQ | XYZ | value=12的字符串,我正在用它拆分: awk -F\| 'print {$4}' | awk -F"=" '{print $2}' 这将给出值12 但是对于字符串DF | REG | EXP | value=,它返回为空 如果字符串在第四列中遇到值且为空,则抛出错误。这可以在awk命令中完成吗 谢谢也许是这样的吧 awk -F\| '{print $4}' | awk -F"=" '{if ($2 == "") print "ERROR:

Awk 将tshark的结果清理到可读性更好的CDP客户端

我试图从命令输出中去掉我不需要的信息,这样我就可以为linux构建一个简单的CDP客户机。现在,我正在使用grep过滤tshark的结果。我正在运行的命令是: tshark-i enp0s25-a持续时间:30-V-f“以太主机01:00:0c:cc:cc:cc”-c2 | grep-e“IP地址”-e“设备ID:”-e“软件版本:Cisco IOS软件”-e“端口ID:”-e“VTP管理域:”-e“本机VLAN:-e”语音VLAN:“-e”双工:“-e”可用电源: 我得到的结果目前采用以下格式

使用awk命令获取行

当n为正数时,下面的命令用于获取模式匹配后的第n行 但是,当我将n作为负数时,同样的命令不适用于获取模式匹配前的第n行。你能帮忙吗 awk /pattern_to_match/{x = NR + n}NR == x file_to_search 谢谢, BSD类似的东西可能会有所帮助 tac file_to_search | awk '/pattern_to_match/{x = NR + n}NR == x' 或 示例: $ seq 10 1 2 3 4 5 6 7 8 9 10 $ s

Awk SED提取2个模式匹配后的首次出现

我正在尝试使用c-shell(恐怕没有其他选项)和SED来解决这个问题。给出此示例文件,其中包含所有失败测试的报告: ============ test_085 ============ - Signature code: F2B0C - Failure reason: timeout - Error: test has timed out ============ test_102 ============ - Signature code: B4B4A - Failure reason:

awk:从文件中获取条目并在其中添加值

我有以下文件: 2 some 5 some 8 some 10 thing 15 thing 19 thing 现在我想以条目结束,其中“some”2,5,8对应于有1的行,其他的都是0。有多少行并不重要。这意味着“某些人”: 至于“东西” 使用awk可以快速实现这一点吗?我的意思是说: awk '{for(i=1;i<=10;i++) entries[$i]=0 for(f=0;<=NF;f++) entries[$f]=1

使用awk拆分多个列

我需要拆分一个包含多个列的文件,如下所示: TCONS_00000001 q1:Ovary1.13|Ovary1.13.1|100|32.599877 q2:Ovary2.16|Ovary2.16.1|100|88.36 TCONS_00000002 q1:Ovary1.19|Ovary1.19.1|100|12.876644 q2:Ovary2.15|Ovary2.15.1|100|365.44 TCONS_00000003 q1:Ova

Awk:如何从两个文件输出数据

所以,是的,我正在尝试将包含电子邮件的文件1与包含电子邮件冒号地址的文件2进行匹配,我该怎么做呢 已尝试awk'FNR==NR{a[$1]=$0;下一步}{print a[$1]$0}'但我知道我做错了什么 文件1: email@email.email email@test.test test@email.email 文件2: email@email.email:addressotest email@test.club:clubbingson test@email.email:addresso

Awk 求文件终端M列最后N行的平均值

我想计算文件M列最后N行的平均值。我发现最好的解决方案是使用tail获取最后的N行,并将其输送到awk。对于我的情况,N=200和M=2。生成的命令将是: tail -n 200 -f filename.asc | awk '{ total += $2 } END { print total/NR }' 然而,我没有得到任何结果。事实上,终端不会返回。我分别尝试了tail,它很好地输出了最后200行,但与awk组合使用时不起作用 我还尝试使用unbuffer(在tail之前)作为建议的解决方案

如何在awk脚本中移动grep?

下面有我想用awk的grep替换的i3grep命令。所以我试过了 ! /000000000000/; ! /000000000000/ $0; ! /000000000000/ $3; 在这里我没有得到一个错误,但是使用下面的脚本和 $ echo 000000000000 | awk '{ ! /000000000000/; print }' 000000000000 它没有像预期的那样跳过这些行 问题 有人能解释为什么我的“非grep”在awk中不起作用吗 grep -v '^#' $ho

Awk 如何阅读字典并替换文件中的单词?

我们有一个如下的源文件(“source-a”)(如果您看到蓝色文本,它来自stackoverflow,而不是文本文件): “source-A”中的每个句子都有自己的一行,并以换行符(\n)结尾 我们有一个字典/转换文件(“converse-B”),如下所示: aluminium<tab>aluminum analyse<tab>analyze white spirit<tab>mineral spirits stag night<tab>bache

如何修复Tcl中正在执行的awk?

当Tcl中的awk命令在终端中运行而不是在Tcl脚本中运行时,我无法从该命令中读取字段 尝试进行语法更改,但它在终端而不是脚本中工作 set a { A B C D E F G H I J K L M N O P Q R S T U V W X Y Z } #store only cell var in file exec grep -in "cell (?*" ./slow.lib | cut -d "(" -f2 | cut -d ")" -f1 > cells.txt #take

如何使用awk将文件列中的子字符串替换为另一个文件中的字符串?

我得到了两个文件,希望使用awk将文件的一列中的子字符串替换为另一个文件中的字符串 f1: 1a1 aaa 777 3_3 ccc 6b6 3.3 ddd 666 f2: b5g9aaa8y 5_6ccc9. output: 1a1 b5g9aaa8y 777 3_3 5_6ccc9. 6b6 我想我可以在两个步骤内做到这一点: 生成子字符串和字符串的交集dict文件 使用awk(接头)来完成它 但是,是否有一行awk命令来检查字符串中是否有子字符串,然后进行替换 # 对不起,我应该解释得

';grep';或';awk&x27;用于从文件中提取数字数据

我有一个包含字母数字数据的CFD输出文件。我的目标是提取某些具有数字数据的行,以便能够绘制。我能够使用grep提取以数值开头的数据。但是,这些提取数据的某些行以数字开头,但也包含我不想要的字母。这是一个样本 3185 interface metric data, zone 1444, binary. 33268 interface metric data, zone 1440, binary. 3d, double precision, pressure-based

带有IP和端口的GREP和AWK文件

我需要一些帮助我有一个文件,其中每个列上都有主机IP和端口,因此该文件如下所示 Timestamp: 1573678793 Host: 192.168.0.1 Ports: 80/open/tcp/ Timestamp: 1574833457 Host: 192.168.0.1 Ports: 443/open/tcp/ Timestamp: 1574833457 Host: 192.168.0.2 Ports: 80/open/tcp/ Timestamp: 1574833457 Host: 1

如何在linux中仅awk选定列和输出

我正在尝试将以下输出的列仅第一个和第三个列导入linux终端。我该怎么做 我的实际产出: akamai-1576314300-xhf78 0/1 Completed 0 5d4h

Awk 通过命令行合并xml标记值

我正在尝试使用sed将publisher和isbn值合并到title标签中。但是我在这里找不到任何符合我要求的例子。示例如下 由此 <book> <title>The Big Book of Silly Jokes for Kids</title> <publisher>Rockridge Press</publisher> <isbn>ISBN-10</isbn> </book> 给

具有计算值和数字范围的awk筛选器列|已更新

嗨,我不知道如何实现给定的预期输出 输入文件,给出输出的当前代码,但必须是预期的 input file awk code output -------- 3700 TEXT_0A 34 NA NA | 3700 TEXT_0A 34 NA NA 850 3721 TEXT_0A 55 ete 851 | 3721 TEXT_0A 55 ete 851 850 3701 TEXT_0A 100 N

Awk 根据行集合对数据进行分组

在第一列中有一个从5.0到12的值(每行增量为.5),我称之为set,在每行的from中有5列带有值 目的是为了找到每个集合(5.0到12.0),将所有集合的2列添加到单个集合中,并添加到相同的案例中,直到文件结束 因此,输出将是4列的组(1列+3组中的3列) 输入文件 5.0 0 0 0 128 128 5.5 3 69 18 128 128 6.0 2 79 12 63 15 6.5 -1 75 11 28 24 7.0 0

上一页 1 2  3   4   5   6    7   8   9  ... 下一页 最后一页 共 146 页