Questions tagged «awk»

AWK是一种解释型编程语言,专门用于文本处理,通常用作数据提取和报告工具。AWK主要用于Unix系统。

8
如何使用awk打印匹配的正则表达式模式?
使用awk,我需要在文件中找到与正则表达式模式匹配的单词。 我只是想打印与模式匹配的单词。 因此,如果在这一行中,我有: xxx yyy zzz 和模式: /yyy/ 我只想得到: yyy 编辑:感谢kurumi,我设法写了这样的东西: awk '{ for(i=1; i<=NF; i++) { tmp=match($i, /[0-9]..?.?[^A-Za-z0-9]/) if(tmp) { print $i } } }' $1 这就是我所需要的:)非常感谢!
109 regex  awk 

24
仍然有任何学习AWK的理由吗?
我一直在学习新的工具,甚至是老式的工具,因为我喜欢为问题使用正确的解决方案。 尽管如此,我想知道是否仍然有任何理由学习其中的一些。awk例如是对我有意思,但对于简单的文本处理,我可以使用grep,cut,sed等而复杂的,我会去为Python。 现在,我并不是说这不是一个强大而便捷的工具。但是由于学习新工具需要时间和精力,是否值得?

16
使用awk打印除第一个字段以外的所有内容
我有一个看起来像这样的文件: AE United Arab Emirates AG Antigua & Barbuda AN Netherlands Antilles AS American Samoa BA Bosnia and Herzegovina BF Burkina Faso BN Brunei Darussalam 我想反转顺序,先打印除$ 1外的所有内容,然后打印$ 1: United Arab Emirates AE 如何做“除字段1之外的所有内容”的技巧?
108 perl  awk  sed 

6
在列值条件下使用awk
我正在从AWK编程语言学习awk,但其中一个示例存在问题。 如果我想在$ 2等于值的情况下打印$ 3(例如1),则我使用的是此命令,它可以正常工作: awk '$2==1 {print $3}' <infile> | more 但是,当我用另一个搜索条件(例如findtext)代替1时,该命令不起作用: awk '$1== findtext {print $3}' <infile> | more 它不返回任何输出,并且我确定输入文件中存在“ findtext”。 我也试过了,但是不起作用: awk '$1== "findtext" {print $3}' <infile> | more 这是我的测试文件“ test”,它有9行和8个字段,以空格分隔: 1 11 0.959660297 0 0.021231423 -0.0073 -0.0031 MhZisp 2 14 0.180467091 0.800424628 0 0.0566 0.0103 ClNonZ 3 …
108 linux  shell  awk 



6
sed或awk:删除模式后的n行
如何在sed(或任何类似工具-例如awk)中混合模式和数字范围?我想要做的是匹配文件中的某些行,并在继续操作之前删除下n行,而我希望将其作为管道的一部分进行。
105 unix  sed  awk 

8
使用awk substr获取最后一个字段
我正在尝试使用awk给定文件绝对路径的文件名。 例如,当给定输入路径时,/home/parent/child/filename我想filename 尝试一下: awk -F "/" '{print $5}' input 完美地运作。 但是,我很难编码$5,如果我的输入具有以下结构,那将是不正确的: /home/parent/child1/child2/filename 因此,通用解决方案要求始终采用最后一个字段(将是文件名)。 使用awk substr函数有一种简单的方法吗?
101 unix  awk  substr 

11
如何使用sed,awk或gawk仅打印匹配的内容?
我看到许多示例和手册页,介绍如何使用sed,awk或gawk进行搜索和替换。 但就我而言,我有一个正则表达式,我想对文本文件运行以提取特定值。我不想进行搜索和替换。这是从bash调用的。我们来看一个例子: 正则表达式示例: .*abc([0-9]+)xyz.* 输入文件示例: a b c abc12345xyz a b c 听起来很简单,但我不知道如何正确调用sed / awk / gawk。我希望做的是从我的bash脚本中获得: myvalue=$( sed <...something...> input.txt ) 我尝试过的事情包括: sed -e 's/.*([0-9]).*/\\1/g' example.txt # extracts the entire input file sed -n 's/.*([0-9]).*/\\1/g' example.txt # extracts nothing
100 regex  unix  sed  awk  gawk 

6
用awk制表符分隔的值
如何从TAB分隔的字符串中选择第一列? # echo "LOAD_SETTLED LOAD_INIT 2011-01-13 03:50:01" | awk -F'\t' '{print $1}' 上面的代码将返回整行,而不仅仅是返回“ LOAD_SETTLED”。 更新: 我需要更改选项卡中第三列的分隔值。以下无效。 echo $line | awk 'BEGIN { -v var="$mycol_new" FS = "[ \t]+" } ; { print $1 $2 var $4 $5 $6 $7 $8 $9 }' >> /pdump/temp.txt 但是,如果分隔符是逗号而不是制表符,则可以按预期工作。 echo $line | awk -v …
90 awk 



7
如何使用awk按列3排序
我有一个像这样的文件(user.csv) ip,hostname,user,group,encryption,aduser,adattr 想要按用户打印所有列排序, 我试过了awk -F ":" '{print|"$3 sort -n"}' user.csv,不起作用。
89 awk 

5
在grep输出中显示文件名和行号
我正在尝试使用grep搜索rails目录。我正在寻找一个特定的单词,我想grep打印出文件名和行号。 是否有grep标志可以帮我做到这一点?我一直在试图使用的组合-n和-l,但这些要么打印出来的文件名不带数字或只是倾出大量的文字来不能轻易读取终端。 例如: grep -ln "search" * 我需要将其通过管道传输到awk吗?
87 awk  grep 

11
根据定界符将一个文件拆分为多个文件
我-|在每个部分之后都有一个用作分隔符的文件...需要使用Unix为每个部分创建单独的文件。 输入文件示例 wertretr ewretrtret 1212132323 000232 -| ereteertetet 232434234 erewesdfsfsfs 0234342343 -| jdhg3875jdfsgfd sjdhfdbfjds 347674657435 -| 文件1中的预期结果 wertretr ewretrtret 1212132323 000232 -| 文件2中的预期结果 ereteertetet 232434234 erewesdfsfsfs 0234342343 -| 文件3中的预期结果 jdhg3875jdfsgfd sjdhfdbfjds 347674657435 -|
86 linux  unix  awk  split 

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.