Questions tagged «awk»

一种模式导向的扫描和处理语言。

6
从给定的模式集中删除不以模式开头的行
我有一个包含如下数据的文件: report aaaaaaaa - .. -th bbbbbbbbb -to ccccccccc .. --. 问题:我想删除任何不以以下字符串开头的行: report -th -to 这意味着所需的输出将删除所有那些中间不需要的点和哈希,并且将如下所示: report aaaaaaaa -th bbbbbbbbb -to ccccccccc sed/ awk/ grep/等任何解决方案,将工作。


4
使用awk修改具有可变字段数的文件中第一列的宽度
我知道如何使用awk的printf函数,但是我不想指定每个字段。 例如,假设这是我的文件: c1|c2|c3|c4|c5 c6|c7|c8|c9|c10 c11|c12|c13|c14|c15 我想对其进行格式化,以便每个记录的第一个字段是c11的宽度-第一个字段中最长的单元格: c1 |c2|c3|c4|c5 c6 |c7|c8|c9|c10 c11|c12|c13|c14|c15 我了解我可以指定: awk -F"|" '{printf "%-3s%s%s%s%s\n", $1, $2, $3, $4, $5}' file > newfile 假设我知道我希望第一列的宽度是多少,但是我不知道文件中有多少个字段。基本上我想做这样的事情: ... '{printf "%-3s|", $1}' ...,然后以其原始格式打印其余字段。

11
Grep匹配并提取
我有一个包含行的文件 proto=tcp/http sent=144 rcvd=52 spkt=3 proto=tcp/https sent=145 rcvd=52 spkt=3 proto=udp/dns sent=144 rcvd=52 spkt=3 我需要提取原是的值tcp/http,tcp/https,udp/dns。 到目前为止,我已经尝试过了,grep -o 'proto=[^/]*/'但是只能提取as的值proto=tcp/。
10 awk  grep 

5
awk / sed / perl一线+如何仅打印json文件中的属性行
如何仅打印json文件中的属性行 json文件的示例 { "href" : "http://master02:8080/api/v1/clusters/HDP/configurations?type=kafka-env&tag=version1527250007610", "items" : [ { "href" : "http://master02:8080/api/v1/clusters/HDP/configurations?type=kafka-env&tag=version1527250007610", "tag" : "version1527250007610", "type" : "kafka-env", "version" : 8, "Config" : { "cluster_name" : "HDP", "stack_id" : "HDP-2.6" }, "properties" : { "content" : "\n#!/bin/bash\n\n# Set KAFKA specific environment variables here.\n\n# The java implementation to use.\nexport JAVA_HOME={{java64_home}}\nexport …
10 awk  sed  perl  json  jq 

5
如何编辑文件中的最后n行?
有没有可以让我编辑文件中最后n行的命令?我有几个文件,里面都有不同数量的行。但是我想修改每个文件的最后n行。目标是在最后n行中用分号替换逗号。但仅在最后n行中。 我不想删除任何行,我只想在每个文件的最后n行中用分号替换每个逗号。 使用sed命令,我可以用此命令替换最后一行。如此处所述: 如何删除文件最后一行的文本? 但这仅使我能够修改最后一行,而不是最后n行。

8
如果一行仅包含一个字符,如何删除行
我只想从包含特定字符的文件中删除一行,如果该行存在多次或不存在,则将该行保留在文件中。 例如: DTHGTY FGTHDC HYTRHD HTCCYD JUTDYC 在这里,我要删除的字符是C这样,命令应该删除行FGTHDC,JUTDYC因为它们C恰好有一次。 如何使用sed或来做到这一点awk?

5
用逗号替换下划线并删除CSV中的双引号
我有一个CSV文件 input.csv "1_1_0_0_76" "1_1_0_0_77" "1_1_0_0_78" "1_1_0_0_79" "1_1_0_0_80" "1_1_0_0_81" "1_1_0_0_82" "1_1_0_0_83" "1_1_0_0_84" "1_1_0_0_85" ............. 等等。 我需要将此CSV文件转换为 result.csv 1,1,0,0,76 1,1,0,0,77 1,1,0,0,78 1,1,0,0,79 1,1,0,0,80 1,1,0,0,81 1,1,0,0,82 1,1,0,0,83 1,1,0,0,84 1,1,0,0,85

1
三元运算符和打印
以下命令有什么问题 awk 'BEGIN {a = 5;b=6; (a==b)? print "a==b" : print "a!=b"}' 输出: awk: BEGIN {a = 5;b=6; (a==b)? print "a==b" : print "a!=b"} awk: ^ syntax error
10 awk 

9
将行转换为列
我有一个文件,其中包含有关在管理程序中运行的VM的详细信息。我们运行一些命令并将输出重定向到文件。并且是以下格式的可用数据。 Virtual Machine : OL6U5 ID : 0004fb00000600003da8ce6948c441bb Status : Running Memory : 65536 Uptime : 17835 Minutes Server : MyOVS1.vmorld.com Pool : HA-POOL HA Mode: false VCPU : 16 Type : Xen PVM OS : Oracle Linux 6 Virtual Machine : OL6U6 ID : 0004fb00000600003da8ce6948c441bc Status : Running Memory …

6
如何检查awk中是否存在文件?[-d'文件名']失败
我正在尝试生成具有不存在的主目录集的用户列表。看来我应该可以用awk做到这一点,但是我的语法有问题。 它总是在[]处告诉我“无效语法”。我究竟做错了什么? awk -F: '{ if(![ -d "$6"]){ print $1 " " $3 " " $7}}' /etc/passwd 我可能最终要使用的最终代码是: awk -F: '{if(system( "[ -d " $6 " ]") == 1 && $7 != "/sbin/nologin" ) {print "The directory " $6 " does not exist for user " $1 }}' /etc/passwd 我在这里有一个相关的问题。
10 bash  awk  directory 

3
如何删除多行文本文件中大括号之间的所有文本?
例: This is { the multiline text file } that wants { to be changed } anyway. 应成为: This is that wants anyway. 我在论坛中找到了一些类似的 主题,但是它们似乎不适用于多行大括号。 如果可能的话,我更喜欢一些单行方法,例如基于grep,sed,awk等的解决方案。 编辑:解决方案似乎还可以,但是我注意到我的原始文件包括大括号嵌套。因此,我要提出一个新问题。谢谢大家:如何删除多行文本文件中嵌套大括号之间的所有文本?

4
删除awk显示中的空白行
我试图为这个问题找出解决方案。我想使用awk该解决方案。 我的输入文件如下所示。 -bash-3.2$ cat file ramesh ramesh_venkat ramesh3_venkat3 ramesh4 ramesh5 venkat venkat3 venkat4 我使用awk命令来提取第二个值_,如下所示。 awk -F "_" '{print $2}' file 但是,尽管上面的命令显示了正确的值,但是我的输出中却出现了空行。我有两个问题。 问题1 如何删除输出中的空白行,以便仅获得venkat和输出中的空白行venkat3? 如果我使用printf的,而不是print我的awk,我得到venkatvenkat3的这不是我想要达到的输出。我想要这样的输出, venkat venkat3 问题2 使用这些值作为关联数组或其他东西,如何确定这些值是否实际出现在$1列中? 我想实现这样的目标, awk -F "_" '$2==1{print $1}' file 编辑 我没有注意到awkStephane 的解决方案。它在做我刚才提到的事情吗?
10 awk 


2
有两种方法可以通过命令行设置awk vars?
我注意到一个O'Reilly的awk示例(1997年),该示例通过在程序文本之后的命令行上进行设置来分配awk变量。它确实有效,但是我在man / info awk中找不到此语法。我刚刚错过了吗?被描述过...?我在手册中看到的唯一语法是该-v选项。 awk '/home/{print foo, bar}' foo="cat" bar="dog" /proc/$$/cmdline 输出: cat dog
10 awk 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.