我正试图找出正确的方法来实现这一点与awk (不太熟悉的awk),但我似乎无法理解。
基本上,我有一个包含两列的文本文件。我想总结第二列,然后除以第二列的每一项之和,如果结果小于0.25,则增加一个计数器。为了做到这一点,我似乎需要循环两次,一次得到和,一次用和来评估每个条目。我怎么才能用一条线来完成这件事?
Example Input:
0 5
1 5
2 10
3 5
Example Output:
3 (the sum is 25 and three of the entries result in a value less than 0.25 when divided by 25)
我想在我的awk脚本的BEGIN部分中为一个文件创建一个头,但是要做到这一点,我需要知道有多少字段。我可以在主部分中设置一个检查,以检查是否为NR==1,但这将在每一行上得到评估,从而减慢速度。
下面是我使用单线衬垫的尝试。
fields.txt
a 1
b 2
c 3
结果:
awk 'NR==1{a=NF; print "before begin, there are ", a, "fields"}BEGIN{print "there are ", a, "fields"}{print a"\t
假设日志结果包含几个用空格分隔的列。对于某些列,如PREEMPTIBLE、EXTERNAL_IP,它们有时有值,有时没有。请看下面的示例。在这种情况下,如何才能获得像INTERNAL_IP这样的其他列? run: gcloud compute instances list --project=XXX, get:
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
Name1 zone1 type1 true
我有两个这样的专栏:
(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中搜索所有与已删除的值相同的值。
我有一个包含以下内容的平面文件
INDIA USA SA NZ AUS ARG GER BRA
一共有八列。现在,我只想将以A开头的那些列的索引存储到数组中。为此,我尝试了以下语句
awk '{for(i=1;i<=NF;i++){if($i~/^A/){set -A newArray $i}}}' testUnix.txt
当我回显文件时,使用
echo "${newArray[*]}"
它是打印56,但是每当我想要得到数组的长度时
echo ${#newArray[@]}
它的长度只显示为1。不是应该是2吗?我也试过
awk '{y = 0;f
我有一个带有制表符分隔值的文件,其中的列数是先验未知的。换句话说,一个文件中的列数是一致的,但不同的文件具有不同的列数。第一列是一个键,其他列是一些任意值。
我需要过滤掉那些值不相同的行。例如,假设列数为4,我需要保留前2行,并过滤掉第3行:
1 A A A
2 B B B
3 C D C
为此,我计划使用AWK,但我不知道如何处理列数未知的事实。已知列数的情况很简单,这是4列的解决方案:
$2 == $3 && $3 == $4 {print}
如何将解决方案推广到任意数量的列?
当我运行下面的命令时,它输出一个列列表如下:
# rancher clusters
CURRENT ID STATE NAME PROVIDER
* abcd active test-cluster Imported
efgh active prod-cluster Imported
xyzd active dev-cluster
我正在运行一个shell脚本,它给出了下面的结果,我希望将结果存储在Excel中不同的列中(主机、状态、过期时间、天数)。如何将其转换为Excel?
Host Status Expires Days
----------------------------------------------- ------------ ------------ ----
FILE:certs/dnscert.crt Valid Aug 4
我有一个数据文件
field1 field2 diseased
discrete discrete discrete
class
No Yes No
Yes Yes Yes
No No No
我想用问号(?)替换除最后一列之外的所有列中的No。这只是一个有三列的玩具例子,我有数千列的数据。所以,单独做是没有意义的。此外,前三行是标题,我想要他们的原样。所以我希望我的结果是
field1 field2 diseased
discrete dis
我需要使用unix shell逐列比较两个文件,并将差异存储在结果文件中。
例如,如果第一个文件的第一个记录的第1列与第二个文件的第一个记录的第1列匹配,则结果将在结果文件中针对该列存储为'=‘,但如果它发现列值存在任何差异,则需要在结果文件中打印相同的值。
下面是确切的要求。
文件1:
id code name place
123 abc Tom phoenix
345 xyz Harry seattle
675 kyt Romil newyork
文件2:
id code name place
123 pkt Rosy phoenix
345 xyz Ha
我有一个标签分隔的csv文件。该文件按列6排序,该列包含每个组的键。我需要的是在每个组之后插入一个字符串作为分隔符。
输入:
car camaleon queso cabra coche 531 cama leon lechuga
dow click comedia clase tierno 531 falda camisa fiel
rederdd black cama reloj visel 532 pila resto cena
viento