列出文件中所有出现的特定字符串或数字:UNIX
List all occurences of a particular string or number in the file : UNIX
我有多个文件包含 phone 格式为 XXX XXX XXXX 或 +XX XXXXXX XXXX 或 XXXXXXXXXX 的数字。我可以列出所有包含特定号码的 phone 号码吗?针对每个文件名的“845”。
目前我正在使用:-
egrep -H 845 *
你可以试试这个:
awk '/845/ {print FILENAME,FNR,[=10=]}' *
或者这样:
grep -rF '845' *
这不会让你只点击 phone 个号码,而是所有符合这个号码的号码。
你不知道这是一个数字的中间,开始还是结束。
仅列出比赛周围的数字,
grep -Ho '[0-9]*845[0-9]*' files
如果您的 phone 号码可以包含空格和标点符号,可以将它们添加到 character classes;但要小心,不要让正则表达式一次性匹配两个相邻的 phone 数字。 (如果它们始终由不在字符 class 中的文本分隔,则没问题。)
(在这个特定的正则表达式中没有任何内容 -E
,所以我没有使用 egrep
。)
这可能会做你想做的(使用 GNU 作为单词分隔符):
$ cat file
now is the 123 845 1234 winter of +01 238456 5432
our 1845234567 discontent.
$ cat tst.awk
{
while ( match([=10=],/(\<(([0-9]{3} ){2}[0-9]{4}|[0-9]{10})|[+][0-9]{2} [0-9]{6} [0-9]{4})\>/) ) {
tgt = substr([=10=],RSTART,RLENGTH)
[=10=] = substr([=10=],RSTART+RLENGTH)
if ( tgt ~ /845/ ) {
print tgt
}
}
}
$ awk -f tst.awk file
123 845 1234
+01 238456 5432
1845234567
如果不是,请编辑您的问题以提供一些示例输入和预期输出。
我有多个文件包含 phone 格式为 XXX XXX XXXX 或 +XX XXXXXX XXXX 或 XXXXXXXXXX 的数字。我可以列出所有包含特定号码的 phone 号码吗?针对每个文件名的“845”。
目前我正在使用:-
egrep -H 845 *
你可以试试这个:
awk '/845/ {print FILENAME,FNR,[=10=]}' *
或者这样:
grep -rF '845' *
这不会让你只点击 phone 个号码,而是所有符合这个号码的号码。
你不知道这是一个数字的中间,开始还是结束。
仅列出比赛周围的数字,
grep -Ho '[0-9]*845[0-9]*' files
如果您的 phone 号码可以包含空格和标点符号,可以将它们添加到 character classes;但要小心,不要让正则表达式一次性匹配两个相邻的 phone 数字。 (如果它们始终由不在字符 class 中的文本分隔,则没问题。)
(在这个特定的正则表达式中没有任何内容 -E
,所以我没有使用 egrep
。)
这可能会做你想做的(使用 GNU 作为单词分隔符):
$ cat file
now is the 123 845 1234 winter of +01 238456 5432
our 1845234567 discontent.
$ cat tst.awk
{
while ( match([=10=],/(\<(([0-9]{3} ){2}[0-9]{4}|[0-9]{10})|[+][0-9]{2} [0-9]{6} [0-9]{4})\>/) ) {
tgt = substr([=10=],RSTART,RLENGTH)
[=10=] = substr([=10=],RSTART+RLENGTH)
if ( tgt ~ /845/ ) {
print tgt
}
}
}
$ awk -f tst.awk file
123 845 1234
+01 238456 5432
1845234567
如果不是,请编辑您的问题以提供一些示例输入和预期输出。