Questions tagged «awk»

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


6
使用awk重新排列列
我正在尝试通过使用将csv文件的第7列移至末尾 awk -F '{print $1,$2,$3,$4,$5,$6,$8,$9,$10,$11,$7}',OFS= "$file" 其中$ file是目录中的.csv文件。但是,输出是 awk: ^ syntax error 有人知道如何解决此错误吗?

8
awk或sed仅小写/大写字符串中的一个字符?
有没有办法如何在一个字符串中仅大写/小写一个字符? 输入示例: syslog_apr_24_30 syslog_mar_01_17 所需的输出: syslog_Apr_24_30 syslog_Mar_01_17 请注意本月初的大写字母。 我已经尝试过,awk但是我还不足以使其正常运行。
13 bash  sed  awk 

3
如何仅对包含给定字符串的行进行sed处理?
输入: Select ASDF 325 sdfg sdflk lk Select TRG 46sdg rasdftz fsgs 45 Select ASDF 6ffg sdfg 4456 sdrg 输出: Select ASDF 325 XXXX sdflk lk Select TRG 46sdg rasdftz fsgs 45 Select ASDF 6ffg XXXX 4456 sdrg 简而言之,我需要将“ sed”“ sdfg”“ sed”为“ XXXX”。 但是:仅在包含“选择ASDF”字符串的行中。我该怎么做?(sed,awk等:\)
13 sed  awk 

3
计数记录与Awk的匹配模式
因此,我被告知要做的last > lastloggedin是创建一个文件,该文件显示自上次系统重新引导以来最后一次登录的类。现在,我被要求编写一个Awk脚本,该脚本的名称myawk可以计算/确定lastloggedin包含该字符串的行 数CFS264。 我已经搞定了 grep -c CFS264 lastloggedin

4
使用awk命令开始和结束
根据awk手册,BEGIN和END不用于匹配输入,而是用于向awk脚本提供启动和清除信息。这是给出的示例: ls -l | \ awk 'BEGIN { print "Files found:\n" } /\<[a|x].*\.conf$/ { print $9 }' Files found: amd.conf antivir.conf xcdroast.conf xinetd.conf 首先,这将打印一个字符串以输出。然后,它检查输入是否存在模式匹配,其中输入以a或x开头,后跟任意字符一次或多次,后跟.conf。对于任何匹配项,将打印第9列。 我们被迫使用从此处开始的事实,是否意味着awk最多只能使用一个包含BEGIN或END的打印功能?如果不是,那为什么我们不能一开始就不使用关键字BEGIN就使用打印功能呢?似乎BEGIN是多​​余的。
13 awk 

2
用零替换缺失值空白
我有大约30K行的制表符分隔文本文件input.txt,我想检查每行(s1..s30K行)是否有缺失值(即空白),并用零值填充缺失值。请参见out.txt input.txt id no1 no2 no3 no4 s1 23 34 45 12 s2 4 4 s3 4 8 0 out.txt id no1 no2 no3 no4 s1 23 34 45 12 s2 0 4 4 0 s3 4 0 8 0

3
AWK-仅在特定列中替换一个字符
我有一个像这样的文件: 2018.01.02;1.5;comment 1 2018.01.04;2.75;comment 2 2018.01.07;5.25;comment 4 2018.01.09;1.25;comment 7 我想.用逗号替换第二列中的所有点,,就像我将sed 's/\./\,/g' file如何使用sed或最好awk仅将其应用于第二列一样,所以我的输出应如下所示: 2018.01.02;1,5;comment 1 2018.01.04;2,75;comment 2 2018.01.07;5,25;comment 4 2018.01.09;1,25;comment 7

3
我可以缩短此筛选器以找到100G以上的磁盘大小吗?
我的目标是从lsblk获得大于100G的磁盘。 我有工作,但是很尴尬。我敢肯定它可以缩短。通过使用与lsblk完全不同的东西,或者我可以直接使用awk过滤人类可读的数字。 这是我汇总的内容: lsblk | grep disk | awk '{print$1,$4}' | grep G | sed 's/.$//' | awk '{if($2>100)print$1}' 它仅输出大于100G的磁盘的sdx和nvmexxx部分。正是我所需要的。 我很满意,但渴望向您学习更多
12 awk  grep  disk  lsblk 

6
如何为每行添加随机字符串?
我正在尝试在运行时为每行添加随机字符串: awk '{print "name" "'$ran'" "-"$0}' 'myfile' 在此之前,将生成随机字符串: ran="$(tr -dc '[:alnum:]' </dev/urandom | head -c 6)" 问题是它将为每行打印相同的随机字符串: nameGQz3Ek- nameGQz3Ek- nameGQz3Ek- 我应该怎么做才能获得每行不同的随机字符串?
12 awk 


8
如何根据第一行对列进行排序?
我需要对一个非常大的数据集的列进行排序(1000行和700000列)。例如,我的列是随机排列的,例如:col1 col4 col3 col2,我需要对其进行排序。 我一直在尝试一些命令,但没有成功。 例: ID M2 M5 M8 M1 M3 M9 .....M7000000 Animal1 1 0 2 1 0 2 .....1 Animal2 0 1 2 0 1 1 .....0 Animal3 2 1 0 1 2 1 .....0 . . . . Animaln 在此示例中,点表示我有很多列和线。同样,我需要对列进行排序,例如: ID M1 M2 M3 M4 M5 …


3
合并两个文件,一次合并一列
我有以下格式的2个大文件(3000列,15000行) file1(制表符分隔): 1/0 0/0 0/0 0/0 1/1 0/0 1/1 0/1 0/0 file2(制表符分隔): 3 5 2 1 7 10 3 4 3 我想将每个文件的第一列中的值与“:”分隔符组合在一起,然后移至第二,第三等列。所需的输出(制表符分隔): 1/0:3 0/0:5 0/0:2 0/0:1 1/1:7 0/0:10 1/1:3 0/1:4 0/0:3 效率并不重要,因此任何语言都可以。如果这已经被问过了,我深表歉意。

3
如何在不再次调用sed或awk的情况下从字符串中删除点字符?
我有一个hostlist.txt包含以下内容的文件: host1.mydomain.com host2.mydomain.com anotherhost www.mydomain.com login.mydomain.com somehost host3.mydomain.com 我有以下小脚本: #!/usr/local/bin/bash while read host; do dig +search @ns1.mydomain.com $host ALL \ | sed -n '/;; ANSWER SECTION:/{n;p;}'; done <hostlist.txt \ | gawk '{print $1","$NF}' >fqdn-ip.csv 输出到fqdn-ip.csv: host1.mydomain.com.,10.0.0.1 host2.mydomain.com.,10.0.0.2 anotherhost.internal.mydomain.com.,10.0.0.11 www.mydomain.com.,10.0.0.10 login.mydomain.com.,10.0.0.12 somehost.internal.mydomain.com.,10.0.0.13 host3.mydomain.com.,10.0.0.3 我的问题是如何删除.逗号前的内容而不进行调用sed或gawk再次调用?我可以在现有步骤中执行某些步骤,sed还是gawk可以删除点的调用? hostlist.txt 将包含数千个主机,因此我希望我的脚本快速高效。

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.