[root@Mylinux tmp]# awk '{print gensub(/[^0-9]*([0-9]+).*/,"\\1",1,$2),$0}' file 1234 xxxx xxxx_1234_5678_xxxx.log xxxx 2234 xxxx xxxx_2234_xxxx.log xxxx 3234 xxxx 3234_xxx_xxx.log xxxx 4234 xxxx xxxx_xxxx_4234.log xxxx ywlscpl 天使 兄弟 你老是用这个函数 。我的awk 里好像没有这个函数。 你来解释一下吧 。 [ 本帖最后由 greendays 于 2009-4-13 17:08 编辑...
by greendays - Shell - 2009-04-13 17:21:16 阅读(1828) 回复(4)
gensub(r, s, h [, t]) Search the target string t for matches of the regu- lar expression r. If h is a string beginning with g or G, then replace all matches of r with s. Other- wise, h is a number indicating which match of r to replace. If t is not supplied, $0 is use...
a b c d a dd c d 类似上面的文件 以tab分隔, 要提取文件,以第三个字段为名称,第三个字段前后皆有空格(空格数不定) 如何写 awk -F'\t' 'NR>1{print > gensub(/^ */, "", 1, $9)".csv"}' filename 这样只删除了前面的
echo "XabF XcdF XdeF" | gawk '{gensub(/X([^X]+)F/,"\\1",2);print}' XabF XcdF XdeF 我的理解是将第二个匹配的XcdF修改成cd现在怎么输出XabF XcdF XdeF了 gensub 像sed \1 \2 & 那种用法怎么写啊 感觉老是出错。 望大虾们详解下 谢谢了
本帖最后由 haokoo 于 2014-03-28 19:16 编辑 最近学习awk是遇到sub ,gsub ,gensub搞到头晕~ 看了manual (没找到awk的就看gawkhttp://www.gnu.org/software/gawk/manual/gawk.html)做个表格区分一下,方便后学者区分。 若有错漏处请各位斧正。谢谢。 awk --version GNU Awk 3.1.7 Copyright (C) 1989, 1991-2009 Free Software Foundation.
[code][root@Mylinux tmp]# echo "123xyz456xyz" | awk '{print gensub(/(.*)xyz/,"\\1",1)}' 123xyz456 [root@Mylinux tmp]# echo "123xyz456xyz" | awk '{print gensub(/([^xyz]*)xyz/,"\\1",1)}' 123456xyz [root@Mylinux tmp]# echo "123xyz456xyz" | awk '{print gensub(/([^xyz]*)xyz(.*)/,"\\1",1)}' 123[/code] 想输出第1个xyz前的内容 第1条命令是贪婪性的结果 第2个命令中,\1为什么会匹配出123456xyz? 第3个命令中,...
一直想弄明白gensub(/xx/,"\\n",1,$1)中\n这个用法的意思 [code][root@Mylinux tmp]# echo "abc||abc123 123abc xyz123" | awk '{print gensub(/abc/,"\\0",1,$1)}' abc||abc123 [root@Mylinux tmp]# echo "abc||abc123 123abc xyz123" | awk '{print gensub(/abc/,"\\2",1,$1)}' ||abc123 [root@Mylinux tmp]# echo "abc||abc123 123abc xyz123" | awk '{print gensub(/abc/,"\\3",1,$1)}' ||abc123[/code] 试到\4,出现了惊奇一...
awk的gensub函数正则表达式参数中可以使用变量吗? 比如: expr="aaa"; gensub(/'"$expr"'/, replace, "g", str)