Tag: awk

如何通过增加其数字部分来查找和替换特定字符串?

我的输入文件是, ami41 ami56 ami23 ami67 ami45 ami34 ami88 jama66 tumi234 bichi23455 susami345 使用单个命令行我需要输出为, ami42 ami57 ami24 ami68 ami46 ami35 ami89 jama66 tumi234 bichi23455 susami345 我用了命令, perl -pe ‘s/(\d+)/$1+1/eg’ inputfile 但我把输出文件作为, ami42 ami57 ami24 ami68 ami46 ami35 ami89 jama67 tumi235 bichi23456 susami346 即所有类型字符串的所有数字都会增加。 但我只需要增加ami字符串的数字。 任何人都可以建议我一些更好的命令行。

如何比较awk中的浮点变量?

awk -F, ‘NR==FNR{c[$29]=$29;next} NF{print $29 ((c[$29]==$29)?” “:”,mismatch”)}’ $file1 $file2 第29个字段的值,即file1中的$ 29是832.9,file2的值是832.9000。 如果我比较它们就不一样了。 我认为这是一个字符串而不是一个数字。 我该怎么办?

awk – 比较两个文件中的文件和打印行

我正在寻找一种比较两个文件的第2列和第1列的方法,如果它们与第一个文件中的所有列相同,而第二个文件中的列为$ 2。 file_1.txt apple tree 5 great see 10 see apple 3 tree bee 11 make change 2 file_2.txt apple 5.21 around 6.21 great 2 bee 1 see 7.43 tree 3 输出应如下所示: apple tree 5 3 great see 10 7.43 see apple 3 5.21 tree bee 11 1 我试过了 awk ‘NR==FNR{a[$2];next} ($1 in a) {print}’ […]

用awk和分隔符拆分字符串

我有日志文件,如: 1:: 10:: 127.0.0.1 172.17.1.1 我希望awk将字符串拆分为:: delimiter上的列。 就像是 : awk {print$1} 结果: 1 和 awk {print$2} 结果: 10 和 awk {print$3} 结果: 127.0.0.1 172.17.1.1 我不知道如何用分隔符分隔awk ::。

awk – 比较两个文件中的2个文件和打印列

我刚才发布了类似的东西,我想,提供的代码可以帮助解决我的问题,但不幸的是我无法根据我的需要调整它: awk – 比较两个文件中的文件和打印行 所以,我又有两个以制表符分隔的文件。 file_1.txt apple 2.5 5 7.2 great 3.8 10 3.6 see 7.6 3 4.9 tree 5.4 11 5 back 8.9 2 2.1 file_2.txt apple :::N back :::ADJ back :::N around :::ADV great :::ADJ bee :::N see :::V tree :::N 输出应如下所示: apple :::N 2.5 5 7.2 great :::ADJ 3.8 10 3.6 back […]

在多个文件中添加电子邮件地址周围的文本

我在文件夹中有许多文本文件。 其中的文字采用以下格式: %%%%%%%%%%@yahoo.com %%%%%%@wanadoo.fr %%%%raviplywoodglasscentre@yahoo.comravi %%nameemail%%@yahoo.com %.getincontact@numberland.com %0dronbracale@roadrunner.com %1%3@example.com %1@elsewhere.com %1@example.com 我想在所有文件文本中进行更改,并使它们如下所示: {“email”:”%%%%%%%%%%@yahoo.com”} {“email”:”%%%%%%@wanadoo.fr”} {“email”:”%%%%raviplywoodglasscentre@yahoo.comravi”} {“email”:”%%nameemail%%@yahoo.com”} 我想制作一个文件夹中的完整文件。 我试过这个: awk ‘{ printf(“{“email”:”%s”}”, $l);}’ test 但它不起作用。 那么,有没有什么办法可以修改像这样的文件夹中的所有文件中的文本?

在perl脚本中使用awk命令

有人可以建议如何在perl脚本中使用命令管道吗? 特别是涉及调用awk命令? 我正在尝试创建一个perl脚本,它将使用df -H读取磁盘使用情况并返回第二行输出,显示%use。 直接在终端中输入命令将返回所需的输出。 df -H | awk ‘{print $(NF-3)}’ 此命令返回正确的结果。 但是当在反向刻度实用程序中使用相同的命令时,perl脚本会抛出很多错误。 $thirdlast=`df -H | awk ‘{print $(NF-3)}’`; print $thirdlast; 为什么脚本中没有运行相同的命令? 有没有其他方法可以返回所需的结果?

对文本文件的特定编辑(awk?)

我有一个看起来像的文件 TITLE 1.000000000000000 10.0000000000000000 0.0000000000000000 0.0000000000000000 0.0000000000000000 10.0000000000000000 0.0000000000000000 0.0000000000000000 0.0000000000000000 10.0000000000000000 UU XX C 0.2000000000000028 0.2000000000000028 0.2000000000000028 0.2967599999999990 0.0641000000000034 0.1551499999999990 0.1033699999999982 0.3361099999999979 0.244990000000001 我需要一个脚本来修改底部数字块( C到30以下比原始值少。有这样的方法吗? 到目前为止,我得到的最好的是 $ awk ‘{if(NR>1){for(i=2;i<=NF;i++){$(i)=$(i)-10;}}print;}' data.txt | column -t 但是,这是来自互联网,我不知道如何自己操纵它达到预期的效果。 然而,这不会打印/覆盖当前data.txt ,这就是我想要的。 谢谢您的帮助!

为什么使用双引号括起awk的动作语句会产生与使用单引号括起来时不同的结果?

如果我使用单引号括起awk的动作语句,它按预期工作: $ dpkg -l | grep “linux\-[az]*\-” | awk {‘print $2’} linux-headers-3.13.0-27 linux-headers-3.13.0-27-generic linux-headers-3.14.4-031404 linux-headers-3.14.4-031404-generic linux-headers-generic linux-image-3.13.0-27-generic linux-image-3.14.4-031404-generic linux-image-extra-3.13.0-27-generic linux-image-generic linux-libc-dev:i386 linux-sound-base 但是,如果我使用双引号将它们括起来,它会打印整行而不是特定的列/字段: $ dpkg -l | grep “linux\-[az]*\-” | awk {“print $2”} ii linux-headers-3.13.0-27 3.13.0-27.50 all Header files related to Linux kernel version 3.13.0 ii linux-headers-3.13.0-27-generic 3.13.0-27.50 i386 Linux kernel headers for version 3.13.0 […]

两个大文件的区别

我有“test1.csv”,它包含 200,400,600,800 100,300,500,700 50,25,125,310 和test2.csv,它包含 100,4,2,1,7 200,400,600,800 21,22,23,24,25 50,25,125,310 50,25,700,5 现在 diff test2.csv test1.csv > result.csv 不同于 diff test1.csv test2.csv > result.csv 我不知道哪个是正确的顺序,但我想要别的东西,上面的两个命令都会输出类似的东西 2 > 100,4,2,1,7 3 2,3c3,5 4 < 100,300,500,700 5 21,22,23,24,25 9 > 50,25,125,310 我想只输出差异,因此results.csv应该是这样的 100,300,500,700 100,4,2,1,7 21,22,23,24,25 50,25,700,5 我尝试了diff -q和diff -s但他们没有做到这一点。 顺序无关紧要,重要的是我只想看到差异,没有>也不是空白。 grep -FvF在较小的文件上做了伎俩而不是在大文件上 第一个文件包含超过500万行,第二个文件包含1300个。 所以results.csv应该会产生~4,998,700行 我也尝试过grep -F -x -v -f ,它不起作用。