[英]Find a variable length number inside a string from a file using awk?
我在UNIX上有很多文件,希望在該文件中獲取與指定模式相關的編號。
大部分文件將在文件中具有唯一的模式,如下所示
some text abc
some text abc
some text abc
(3 rows)
我只想使用awk打印數字3
。
該數字可能因文件而異,可能是35644或任何數字值。
我想使用awk not sed或grep查找該數字,因為HP UNIX不支持高級sed / grep功能。
以下內容對您有用嗎?
sed -e 's/(\([0-9][0-9]*\) rows)/\1/;t;d'
如果(N rows)
被N
替換成功,則t
轉到腳本的末尾,否則, d
刪除該行(即,將跳過不包含該表達式的所有行)。
由於您不希望(或不能)使用簡單的sed
方法,因此這是awk
解決方案:
輸入文件樣本:
$ head file[123]
==> file1 <==
some text abc
some text abc
some text abc
(3 rows)
==> file2 <==
some text abc
some text abc
some text abc
some text abc
some text abc
(5 rows)
==> file3 <==
some text abc
some text abc
(2 rows)
$ for f in file[123]; do awk 'END{ print FILENAME, substr($1, 2) }' "$f"; done
file1 3
file2 5
file3 2
sed
解決方案(在我的變體中)將如下所示:
for f in file[123]; do echo -n "$f "; sed -n '$ s/[() ]\|rows//gp' "$f"; done
也許與此awk
awk -v RS='(' 'END{print $1}' infile
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.