在下面的命令中,
cat abc.txt|awk -F"[0-9]+." '{print FS $3}'
这里FS
打印[0-9]+.
.但是,我希望awk
通过该字段分隔符打印匹配的值,例如“99”。 。知道我该怎么做吗?
下面说abc.txt
这个。我想用数字分隔第二个句子。 asFS
并打印该数字。在输出中。基本上想要打印...的值FS
...这种需求在几个地方都遇到过。
14. Animals 20. features
1. tiger 1. wild animal
2. cat 2. domestic animal
3. parrot 3. bird with wings
答案1
FS
你不想要;的值您想要匹配的字符串FS
(可以是同一行上的不同字符串):
> awk -F"[0-9]+." '{ printf "line %3d.: ",NR;
if (NF==1) { print "No FS match in this line"; next; }; str=$0;
for(j=1;j<NF;j++) { match(str, FS); fs_str=substr(str, RSTART, RLENGTH);
printf "_%s_, ",fs_str; str=substr(str, RSTART+RLENGTH)}; print ""; }' file
line 1.: _14._, _20._,
line 2.: _1._, _1._,
line 3.: _2._, _2._,
line 4.: _3._, _3._,
答案2
我gawk
喜欢FPAT为了这
awk -vFPAT='[[:digit:]]+\\.' 'NF{$1=$1; print}' file
14. 20.
1. 1.
2. 2.
3. 3.