Linux用awk和grep写出一个命令,该命令要找出数字长度不是10位数的电话号码,并打印出数字长度不是10位数的前两列
时间: 2024-02-29 12:51:28 浏览: 78
可以使用以下命令来实现:
```
grep -Eo '^[0-9]{1,2} [0-9]+' file.txt | awk '{if (length($2) != 10) print $1, $2}'
```
其中,`grep -Eo '^[0-9]{1,2} [0-9]+' file.txt` 用于匹配文件中以数字开头的行,且只输出行中的前两列(用空格分隔)。然后,`awk '{if (length($2) != 10) print $1, $2}'` 用于筛选出第二列不为10位数的行,然后打印出前两列。
相关问题
Linux用awk和grep写出一个命令,该命令要找出数字长度不是10位数的电话号码,并打印出错误的手机号码
可以使用以下命令:
```
grep -Eo '\b[0-9]{1,9}\b|\b[0-9]{11,}\b' file.txt | awk '{print}'
```
其中,`file.txt` 是包含电话号码的文件名,可以替换为相应的文件名。
命令解释:
- `grep -Eo '\b[0-9]{1,9}\b|\b[0-9]{11,}\b' file.txt` 用于在文件中查找符合条件的电话号码,其中:
- `-E` 表示启用正则表达式匹配;
- `-o` 表示只输出匹配的部分;
- `'\b[0-9]{1,9}\b|\b[0-9]{11,}\b'` 是一个正则表达式,用于匹配不是10位数的电话号码。其中 `\b` 表示单词边界, `[0-9]{1,9}` 表示匹配1到9位数的数字,`|` 表示或, `[0-9]{11,}` 表示匹配11位及以上的数字。
- `awk '{print}'` 用于将输出结果打印出来。
执行该命令后,会输出长度不是10位的电话号码。
Linux用awk和grep写出一个命令,该命令要找出最后一项数字长度不是10位数的电话号码
可以使用以下命令来实现:
```
grep -Eo '^[0-9]+( [0-9]+)+' file.txt | awk '{if (length($NF) != 10) print}'
```
其中,`grep -Eo '^[0-9]+( [0-9]+)+' file.txt` 用于匹配文件中以数字开头,后面跟着一或多个由空格分隔的数字的行。然后,`awk '{if (length($NF) != 10) print}'` 用于筛选出最后一项数字长度不为10位数的行,然后打印出整行。`$NF` 表示最后一项。
阅读全文