LeetCode(193. Valid Phone Numbers)(sed用法)
193. Valid Phone Numbers
Given a text file file.txt that contains list of phone numbers (one per line), write a one liner bash script to print all valid phone numbers.
You may assume that a valid phone number must appear in one of the following two formats: (xxx) xxx-xxxx or xxx-xxx-xxxx. (x means a digit)
You may also assume each line in the text file must not contain leading or trailing white spaces.
Example:
Assume that file.txt has the following content:
987-123-4567
123 456 7890
(123) 456-7890
Your script should output the following valid phone numbers:
987-123-4567
(123) 456-7890
题解:验证字符串是否为正确电话号码格式
解法一: awk
注:
- awk '/正则表达式/' file.txt
- [0-9]{3}: 表示 0~9数字匹配三次
- ([0-9]{3}-|\([0-9]{3}\)): 表示为一组, | 表示为或
awk '/^([0-9]{3}-|\([0-9]{3}\) )[0-9]{3}-[0-9]{4}$/' file.txt

解法二:grep
注意:\d{3}来表示[0-9]{3};-P:逐行匹配
grep -P '^(\d{3}-|\(\d{3}\) )\d{3}-\d{4}$' file.txt

解法三:sed
补充sed用法:
简介:sed是流编辑工具,用来对文本进行过滤和替换。sed通过输入读取文件内容,但 一次仅读取一行内容 进行某些指令处理后输出,sed更适合于处理大数据文件。
基本原理:sed在处理文本文件的时候,会在内存上创建一个模式空间,然后把这个文件的每一行调入模式空间用相应的命令处理,处理完输出;接着处理下一行,直到最后。
基本语法:
(1)sed [选项] [定址commands] [inputfile]
关于定址:
- 定址可以是0个、1个、2个;通知sed去处理文件的哪几行。
- 0个:没有定址,处理文件的所有行
- 1个:行号,处理行号所在位置的行
- 2个:行号、正则表达式,处理被行号或正则表达式包起来的行
(2)选项:
--version 显示sed版本hao
--help 显示帮助文档
-n 关闭默认输出,默认将自动打印所有行
-e 多点编辑,允许多个脚本指令被执行。
-r 支持扩展正则+ ? () {} |
-i 可以修改原文件,慎用!
-f 支持使用脚本
命令:
p 打印行
d 删除行
s 替换
n 替换第几个匹内容
w 另存为
a 之后添加一行
i 当前行之前插入文本
y 替换匹配内容
(p和-n合用)

(d:删除)

(s/pattern/replacement/flags)

题解:
sed -n -r '/^([0-9]{3}-|\([0-9]{3}\) )[0-9]{3}-[0-9]{4}$/p' file.txt

LeetCode(193. Valid Phone Numbers)(sed用法)的更多相关文章
- LeetCode 193. Valid Phone Numbers
分析 难度 易 来源 https://leetcode.com/problems/valid-phone-numbers/ 题目 Given a text file file.txt that con ...
- 193 Valid Phone Numbers
Given a text file file.txt that contains list of phone numbers (one per line), write a one liner bas ...
- [LeetCode] 193. Valid Phone Numbers_Easy tag: Bash
Given a text file file.txt that contains list of phone numbers (one per line), write a one liner bas ...
- [LeetCode] Valid Phone Numbers 验证电话号码
Given a text file file.txt that contains list of phone numbers (one per line), write a one liner bas ...
- [Bash]LeetCode193. 有效电话号码 | Valid Phone Numbers
Given a text file file.txt that contains list of phone numbers (one per line), write a one liner bas ...
- linux学习基础6之sed用法详解
1 sed 又称为流编辑器,它逐行将文本文件中的行读取到模式空间中间去,将符合编辑条件的行进行编辑后输出到显示器上来.默认sed不编辑原文件只处理模式空间中的内容. 2 sed用法 sed [opti ...
- [LeetCode] Longest Valid Parentheses
第一种方法,用栈实现,最容易想到,也比较容易实现,每次碰到‘)’时update max_len,由于要保存之前的‘(’的index,所以space complexity 是O(n) // 使用栈,时间 ...
- LeetCode(2) || Add Two Numbers && Longest Substring Without Repeating Characters
LeetCode(2) || Add Two Numbers && Longest Substring Without Repeating Characters 题记 刷LeetCod ...
- Valid Phone Numbers
Given a text file file.txt that contains list of phone numbers (one per line), write a one liner bas ...
随机推荐
- 【Gym 100812C】Story of Princess (走完图所有边)
BUPT2017 wintertraining(15) #7A 题意 给你一个图,n个点m条边,求走遍所有边,至少经过几次点,及输出依次经过的点.n and m (2 ≤ n ≤ 10^5, 1 ≤ ...
- Nginx反向代理服务器
安装Nginxyum -y install nginx 修改并添加配置文件vi /etc/nginx/nginx.conf在HTTP模块中添加: client_header_timeout 3000; ...
- Leetcode 167. 两数之和 II - 输入有序数组 By Python
给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数. 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2. 说明: 返回的下标值 ...
- Android LinearLayout 渐变背景
更多 参考 Drawable Resources | Android Developers main_header.xml: <?xml version="1.0" enc ...
- UVA10559 Blocks(区间dp)
有n个带有颜色的方块,没消除一段长度为x的连续的相同颜色的方块可以得到x^2的分数,让你用一种最优的顺序消除所有方块使得得分最多. 输入格式 第一行包含测试的次数t(1≤t≤15) 每个案例包含两行. ...
- 【mysql】mysql常用语句
返回不重复数据 SELECT DISTINCT user_name,vistor_username FROM KY_FEED_VISTOR WHERE user_name='shenhy' 单独的di ...
- 码农眼中的数学之~矩阵专栏(附Numpy讲解)
2.矩阵专栏¶ 吐槽一下:矩阵本身不难,但是矩阵的写作太蛋疼了 (⊙﹏⊙)汗 还好有Numpy,不然真的崩溃了... LaTex有没有一个集成了很多常用公式以及推导或者含题库的在线编辑器? 代码裤 ...
- angular2的lazyload初体验
angular2自带了lazyload,就是路由的loadChild,要优化ng2项目必不可少.代码已更新到ng-demo ->https://github.com/chenby/ng2-dem ...
- js jquery 遍历 for,while,each,map,grep
js jquery 遍历 一,for循环. // 第一种var arr = [1, 2, 3];for(var i = 0; i < arr.length; i++) { console.log ...
- GNOME 3.28 启用桌面图标
原由 GNOME 3.28合并了移除桌面图标支持 Nautilus从此不在支持桌面图标,直到找到新的解决方案 Issues地址:https://gitlab.gnome.org/GNOME/nauti ...