首页 > 系统相关 >力扣——193.有效电话号码(shell)

力扣——193.有效电话号码(shell)

时间:2023-04-22 13:56:59浏览次数:42  
标签:shell sed file 193 力扣 123 电话号码 txt

title: 力扣——193.有效电话号码(shell)

给定一个包含电话号码列表(一行一个电话号码)的文本文件 file.txt,写一个 bash 脚本输出所有有效的电话号码。

你可以假设一个有效的电话号码必须满足以下两种格式: (xxx) xxx-xxxx 或 xxx-xxx-xxxx。(x 表示一个数字)

你也可以假设每行前后没有多余的空格字符。

示例:

假设 file.txt 内容如下:

987-123-4567
123 456 7890
(123) 456-7890

你的脚本应当输出下列有效的电话号码:

987-123-4567
(123) 456-7890

方法1:

grep -P "^(\(\d{3}\)\s|\d{3}-)(\d{3}-)\d{4}$" file.txt

注意:在Linux的shell中,普通的grep或者egrep是不支持这种\d这种缩略形式的,必须使用[0-9]表示数字。

如果使用\d这种形式,必须指定-P选项,代表使用Perl形式的正则表达式。

\d ——表示匹配数字,{3}表示匹配多少次数字;

\s——表示空白字符。

方法2:

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

sed主要是对数据进行选取、替换、删除和新增的命令。一行行地读取、处理数据。

sed命令的语法:

sed [选项] '[动作]' 文件名

-n:一般sed会把所有数据输出到屏幕上。如果加入该选项,会把sed命令处理过的行输出到屏幕上。

-r:在sed中支持扩展正则表达式。

方法3:

awk '/^([0-9]{3}-|\([0-9]{3}\) )[0-9]{3}-([0-9]{4})$/' file.txt

awk命令的语法:

awk '{command}' filename

awk一行行地读取、处理数据。

标签:shell,sed,file,193,力扣,123,电话号码,txt
From: https://www.cnblogs.com/blue-Suri/p/17342941.html

相关文章

  • 力扣——192.统计词频(shell)
    title:力扣——192.统计词频(shell)题目描述:写一个bash脚本以统计一个文本文件words.txt中每个单词出现的频率。为了简单起见,你可以假设:words.txt只包括小写字母和''。每个单词只由小写字母组成。单词间由一个或多个空格字符分隔。示例:假设words.txt内容如下:th......
  • 力扣——195.第十行(shell)
    title:力扣——195.第十行(shell)给定一个文本文件file.txt,请只打印这个文件中的第十行。示例:假设file.txt有如下内容:Line1Line2Line3Line4Line5Line6Line7Line8Line9Line10你的脚本应当显示第十行:Line10方法1:awk'NR==10'file.txt方法2:tai......
  • 力扣——240.搜索二维数组II(c语言)
    title:力扣——240.搜索二维数组II(c语言)同《剑指offer》04题目描述:编写一个高效的算法来搜索mxn矩阵matrix中的一个目标值target。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。示例1:输入:matrix=[[1,4,7,11,15],[2,5,8,12,19],......
  • 力扣——5.最长回文子串(c语言)
    题目描述:给定一个字符串s,找到s中最长的回文子串。你可以假设s的最大长度为1000。示例1:输入:"babad"输出:"bab"注意:"aba"也是一个有效答案。示例2:输入:"cbbd"输出:"bb"1、思路1:动态规划对于一个子串而言,如果它是回文子串,并且长度大于2,那么将它首尾两个字......
  • window的shell怎么查看当前用户名
    在Windows的命令行界面下,可以使用%username%的环境变量来获取当前用户名。具体操作步骤如下:打开cmd命令提示符。可以使用Win+R组合键打开运行窗口,输入cmd命令,然后点击“确定”按钮。在命令提示符下输入echo%username%命令。按下回车键,在命令行界面中就可......
  • shell参数的个数用什么变量,怎么表示上一个运行的结果?两个数字相加,用什么
    Shell参数的个数可以使用特定的变量来表示,即$#变量。这个变量表示传递给当前shell脚本或函数的参数个数。例如,如果调用一个shell脚本,并向其传递了3个参数,那么在这个脚本中$#的值将为3。上一个运行的结果可以使用$?变量来表示。这个变量记录上一次命令的返回值(......
  • shell 脚本编程进阶之函数
    一、定义函数1、语法#语法一:func_name(){...函数体...}#语法二:functionfunc_name{...函数体...}#语法三:functionfunc_name(){...函数体...} 在函数中定义本地变量,local name=NAME2、查看定义的函数#查看当前已定义的函数名declare-F#查看当前已定义的函数定义declare-f#......
  • Windterm-SSH/Sftp/Shell/Telnet/Serial 客户端
    如果图片查看不了的话,请关注公众号@生活处处有BUGWindTerm是一款开源免费、跨平台SSH/Sftp/Shell/Telnet/Serial客户端,即远程连接工具,还跨平台,支持Windows、Linux和macOS。特征实现了SSHv2、Telnet、RawTcp、Serial、Shell协议。会话认证时支持SSH自动执行。支......
  • shell与export命令
    围绕以下几个问题来学习export命令:1.什么是export命令?2.为什么要用export命令?3.怎么使用export命令?1.什么是export命令?♦ 用户登录到Linux系统后,系统将启动一个用户shell。在这个shell中,可以使用shell命令或声明变量,也可以创建并运行shell脚本程序。运行shell脚本程序......
  • MySQL Shell 使用报错 SyntaxError: Unexpected identifier
    文章目录一、问题报错二、解决办法一、问题报错MySQLShell8.0.23Copyright(c)2016,2021,Oracleand/oritsaffiliates.OracleisaregisteredtrademarkofOracleCorporationand/oritsaffiliates.Othernamesmaybetrademarksoftheirrespectiveowners.T......