我有 1000 个文件,文件名如下:
总值计数.html?itemid=5555
有内容
total.val={"number":1234,"Validation":YES}
我想要这样的输出商品编号:使用 awk
5555:1234
谢谢
答案1
如果你有 GNU Awk:
$ gawk '
BEGINFILE{
split(FILENAME,a,/=/)
}
match($0,/"number":[0-9]+/){
printf "%s:%d\n", a[2], substr($0,9+RSTART,RLENGTH)
}
' total_val*
5555:1234
或者使用 Perl
$ perl -lnE '$x = (split /=/,$ARGV)[1]; say "$x:$1" if /"number":(\d+)/' total_val*
5555:1234
在这两种情况下都不会进行任何检查(例如,文件名是否在符号上成功分割=
)。