Linux使用shelep/awk命令编写程序:删除空行,找出没有电话号码的人的名字,找出不正确的电话号码
时间: 2024-02-29 13:51:16 浏览: 20
删除空行可以使用sed命令:
```
sed '/^$/d' file.txt
```
上面的命令会删除file.txt文件中的空行。
找出没有电话号码的人的名字,可以使用awk命令:
```
awk -F: '$NF == "" {print $1}' file.txt
```
上面的命令假设file.txt文件中每一行的格式为“姓名:电话号码”,$NF表示每一行的最后一个字段(即电话号码),如果$NF为空,则打印该行的第一个字段(即姓名)。
找出不正确的电话号码,可以使用grep命令:
```
grep -vE '^(\d{3}-|\(\d{3}\) )?\d{3}-\d{4}$' file.txt
```
上面的命令假设file.txt文件中每一行的格式为“姓名:电话号码”,使用正则表达式匹配电话号码,如果匹配失败,则打印该行。正则表达式中,\d表示数字,{3}表示重复3次,|表示或,()表示分组。
相关问题
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` 表示最后一项。
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位的电话号码。