Tag: gawk

如何使用sed,awk或gawk打印只匹配的内容?

我看到很多关于如何使用sed,awk或gawk进行search和replace的示例和手册页。 但就我而言,我有一个正则expression式,我想运行一个文本文件来提取一个特定的值。 我不想做search和replace。 这是从bash调用。 我们用一个例子: 示例正则expression式: .*abc([0-9]+)xyz.* input文件示例: 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

如何使用awb与shebang(即#!)的多个参数?

我想执行一个gawk脚本–re-interval使用shebang。 “天真”的做法 #!/usr/bin/gawk –re-interval -f … awk script goes here 不起作用,因为gawk被第一个参数"–re-interval -f" (不是分割在空白周围)调用,它不理解。 有没有解决方法? 当然,你可以不直接调用gawk,而是将其封装到一个shell脚本中,以分裂第一个参数,或者创build一个shell脚本,然后调用gawk并将脚本放到另一个文件中,但是我想知道是否有一些方法可以做这在一个文件中。 shebang行的行为在系统之间是不同的 – 至less在Cygwin中它不会用空格分隔参数。 我只是在乎如何在一个像这样的系统上做到这一点; 该脚本并不意味着可移植。

在awk中打​​印倒数第二列/字段

我想在awk中打​​印倒数第二列或者字段。 字段的数量是可变的。 我知道我应该可以使用$NF但不知道如何使用它。 而这似乎并没有工作: awk ' { print ( $NF– ) } '

如何使用“:”作为awk字段分隔符?

给出以下命令: echo "1: " | awk '/1/ -F ":" {print $1}' 为什么awk输出: 1:

使用awk打印从第n个到最后一个的所有列

现在我有这条线,它的工作,直到我有第二个领域的空白。 svn status | grep '\!' | gawk '{print $2;}' > removedProjs 有没有办法让awk打印所有$ 2或更多的东西? ($ 3,$ 4,直到我们再没有列了?) 我想我应该补充一点,我在Cygwin的Windows环境下这样做。

awk保存修改到位

我正在学习awk ,我想知道是否有一个选项来修改文件,类似于sed我将使用-i选项来保存对文件的修改。 我明白我可以使用redirect来写入更改。 但是有没有在awk的选项做到这一点?