Questions tagged «awk»

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

3
AWK printf数的宽度并四舍五入
我需要打印出一个数字,但要给定宽度并四舍五入(用awk!) %10s 我有这个,以某种方式我需要连接,%d但是我所做的一切最终导致awk的参数过多(因为我有更多的列)。
20 scripting  awk  printf 

4
将长输出分成两列
是否有一个简单的实用程序或脚本来对我的一个脚本的输出进行列化?我有某种形式的数据: A aldkhasdfljhaf B klajsdfhalsdfh C salkjsdjkladdag D lseuiorlhisnflkc E sdjklfhnslkdfhn F kjhnakjshddnaskjdh 但是如果这变成两个长,则以以下形式写入数据(仍然按垂直顺序排列): A aldkhasdfljhaf D lseuiorlhisnflkc B klajsdfhalsdfh E sdjklfhnslkdfhn C salkjsdjkladdag F kjhnakjshddnaskjdh 通过阅读手册页,我认为这column不适合,但我不确定。拆分表格很容易: A B C D E F 通过仅\n每隔两行打印一次(我当前脚本执行的操作)。有任何想法吗?谢谢!

4
在第一个空格后使用sed / awk删除任何内容
aaaaaaaa 09 bbbbbbbb 90 ccccccccccccccc 89 ddddd 09 使用sed / awk / replace,在上面的文本中,我想删除每行第一个空格之后的所有内容。例如,输出将是: aaaaaaaa bbbbbbbb ccccccccccccccc ddddd 任何帮助将不胜感激。
20 sed  grep  awk 


5
如何对具有major.minor.patch级别的列表进行排序,有时还可以正确地对rc进行排序?
我必须使用shell脚本对以下列表进行排序,并使最新版本显示在底部或顶部。我将如何仅使用Shell工具来做到这一点? release-5.0.0.rc1 release-5.0.0.rc2 release-5.0.0 release-5.0.1 release-5.0.10 release-5.0.11 release-5.0.13 release-5.0.14 release-5.0.15 release-5.0.16 release-5.0.17 release-5.0.18 release-5.0.19 release-5.0.2 release-5.0.20 release-5.0.21 release-5.0.22 release-5.0.23 release-5.0.24 release-5.0.25 release-5.0.26 release-5.0.27 release-5.0.28 release-5.0.29 release-5.0.3
18 shell-script  awk  sed  python  sort 

3
awk重复{n}不起作用
我正在尝试使用重复符号{n}打印行,但是它不起作用。对于。例如我想打印所有长度为4个字符的行 awk '/^.{4}$/' test_data 上面的代码没有打印出来。如何解决它,以便可以使用重复符号?我知道类似的选择awk '/^....$/' test_data和awk 'length ==3 ' test_data

3
使用awk,sed提取具有特定图案的部分线
我对awk / sed运算符有疑问。我有一个大文件,重复了以下几行 Expression loweWallrhoPhi : sum=-6.97168e-09 Expression leftWallrhoPhi : sum=6.97168e-09 Expression lowerWallPhi : sum=-5.12623e-12 Expression leftWallPhi : sum=5.12623e-12 Expression loweWallrhoUSf : sum=-6.936e-09 Expression leftWallrhoUSf : sum=6.97169e-09 Expression lowerWallUSf : sum=-5.1e-12 Expression leftWallUSf : sum=5.12624e-12 我想在每种情况下将总和后的值提取到单独的文件中。可以一次这样做吗?

7
打印奇数行,打印偶数行
我想从文件中打印奇数行和偶数行。 我发现了这个利用echo的shell脚本。 #!/bin/bash # Write a shell script that, given a file name as the argument will write # the even numbered line to a file with name evenfile and odd numbered lines # in a text file called oddfile. # ------------------------------------------------------------------------- # Copyright (c) 2001 nixCraft project <http://cyberciti.biz/fb/> # …

11
从大型文件中获取大量Grep模式
我有一个文件,每天增长约200,000行,并且全部由以下三行组成: 1358726575123 # key Joseph Muller # name carpenter # job 9973834728345 Andres Smith student 7836472098652 Mariah Anthony dentist 现在,我还有另一个文件,可以从中提取大约10,000个键模式,例如1358726575123。然后,我for使用这些模式运行循环,并且必须对照第一个文件检查它们。如果文件不包含这种模式,则将模式保存在第三个文件中以进行进一步处理: for number in $(grep -o '[0-9]\{12\}' file2); do # finds about 10.000 keys if ! grep -q ^$number$ file1; then # file1 is a huge file printf "$number\n" >>file3 # …
18 grep  awk  database  text 

1
删除awk中的数组
在awk中,我可以使用循环清除数组,使其成为空数组,这等效于删除它。 for (key in array) delete array[key]; 有没有更简单的方法?我可以完全删除一个数组,以便可以将变量名重新用于标量吗?
18 awk  array 

5
合并两个列表,同时删除重复项
我有一个使用Busybox(OpenWRT)的嵌入式Linux系统-因此命令受到限制。我有两个看起来像的文件: 第一个档案 aaaaaa bbbbbb cccccc mmmmmm nnnnnn 第二档 mmmmmm nnnnnn yyyyyy zzzzzz 我需要将这2个列表合并为1个文件,并删除重复项。 我没有差异(空间有限),所以我们得到使用的伟大awk,sed和grep(或可能被包含在一个标准的Busybox的实例其他工具)。转到合并文件,如: command1 > mylist.merge command2 mylist.merge > originallist 完全可以。它不必是单行命令。 我正在使用的Busybox实例中当前定义的函数(默认为OpenWRT):[,[[,arping,ash,awk,basename,brctl,bunzip2,bzcat,cat,chgrp,chmod,chown,chroot,clear,cmp, cp,crond,crontab,cut,date,dd,df,dirname,dmesg,du,echo,egrep,env,expr,false,fgrep,find,free,fsync,grep,gunzip,gzip,halt,head,hexdump, hostid,hwclock,id,ifconfig,init,insmod,kill,killall,klogd,更少,ln,锁,记录器,logread,ls,lsmod,md5sum,mkdir,mkfifo,mknod,mktemp,mount,mv,nc,netmsg, netstat,nice,nslookup,ntpd,passwd,pgrep,pidof,ping,ping6,pivot_root,pkill,poweroff,printf,ps,pwd,重新启动,重置,rm,rmdir,rmmod,route,sed,seq,sh,sleep,排序,启动停止守护程序,字符串,switch_root,sync,sysctl,syslogd,tail,tar,Tee,telnet,telnetd,test,时间,顶部,触摸,tr,traceroute,true,udhcpc,umount,uname,uniq,正常运行时间,vconfig,vi,看门狗,wc,wget,其中,xargs,是,zcat
18 bash  grep  sed  awk  busybox 

3
如何对某些行运行awk?
我想用提取一些行awk。是否可以执行以下任务: ls -l | awk 'BEGIN FOR(i=122;i<=129;i++) FNR==i' 如何显示行号122到129的详细信息?
18 linux  awk 

4
将文件分成两部分
我的文件很大,需要分成两个文件。假设在第一个文件中应选择1000行并将其放入另一个文件,然后在第一个文件中删除这些行。 我尝试使用,split但它正在创建多个块。

2
条件块与条件语句(如果有)
说我有一个文件: PRO 1 GLN 5.55112e-17 ILE -6.245e-17 THR 5.55112e-17 我希望第二列中数字不等于1的每一行将其更改为0并保留其余部分。 如果我使用if(即条件语句),则一切正常: awk '{if($2!=1){print $1,"0"}else{print $0}}' file PRO 1 GLN 0 ILE 0 THR 0 但是当我使用条件块时,发生了一些不希望的事情: awk '$2!=1 {print $1,"0"} {print $0}' file PRO 1 GLN 0 GLN 5.55112e-17 ILE 0 ILE -6.245e-17 THR 0 THR 5.55112e-17 您可以看到问题所在。 如何解决此错误? 为什么会发生此错误? 条件语句和条件块之间有什么区别?
18 awk 

3
awk:强制返回状态吗?
这是我先前问题的跟进。 我正在使用此方便的代码段验证/ etc / passwd中的字段数。在以下示例中,用户“ fieldcount1”和“ fieldcount2”具有错误的字段数: $ awk -F: ' NF!=7 {print}' /etc/passwd fieldcount1:x:1000:100:fieldcount1:/home/fieldcount1:/bin/bash:::: fieldcount2:blah::blah:1002:100:fieldcount2:/home/fieldcount2:/bin/bash: $ echo $? 0 您会注意到,awk将以0的返回状态退出。从它的角度来看,这里没有问题。 我想将此awk语句合并到shell脚本中。我想打印所有错误的行,并将返回代码设置为1(错误)。 我可以尝试强制使用特定的退出状态,但是awk仅打印一行: $ awk -F: ' NF!=7 {print ; exit 1}' /etc/passwd fieldcount1:x:1000:100:fieldcount1:/home/fieldcount1:/bin/bash:::: $ echo $? 1 我可以强制awk以返回状态“ 1”退出并打印所有匹配的行吗?

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.