valid phone numbers

2018-9-4 杜世伟 awk

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

cat > file.txt <<EOF
987-123-4567
(123) 456-7890
0(001) 345-0000
(001) 123-345

阅读全文>>

标签: linux grep awk

评论(0) 浏览(2541)

从苦逼到牛逼,详解Linux运维工程师的打怪升级之路

2017-10-1 杜世伟 Linux

运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感知前方潮流变化。如:今年大数据,人工智能比较火……(相对表示就是 Python 比较火)

之前写过运维基础篇,发现对很多人收益挺大,接下来也写下关于这4年多的运维实践经验,从事了2年多游戏运维,1年多安全运维,1年大数据运维,相关行业信息不能算非常精通,但是熟悉和熟练还是相对可以的。


初级篇


linux运维人员常用工具拓扑详见:


阅读全文>>

标签: linux rsync sed awk python

评论(0) 浏览(20265)

shell 随机从文件中抽取若干行的实现方法

2014-6-4 杜世伟 shell

方法一

        通过shuf命令:

  • shuf 命令的选项:
  • -e, --echo :将每个参数视为输入行
  • -i, --input-range=LO-HI :将LO 到HI 的每个数字视为输入行
  • -n, --head-count=行数 : 最多输出指定的行数
  • -o, --output=文件 :将结果输出到指定文件而非标准输出
  • --random-source=文件 :从指定文件获得随机比特
  • -z, --zero-terminated :以0 结束行而非新行
  • --help :显示此帮助信息并退出
  • --version :显示版本信息并退出

阅读全文>>

标签: linux sort awk shuf

评论(0) 浏览(10750)

使用sed awk bash提取行的范围

2014-5-15 杜世伟 Vim

使用sed awk bash提取行的范围


以下是根据行号打印或提取文件部分的几种不同方式。


方式一使用sed把文件中指定行的内容重定向到/tmp/file1中

sed -n ’27,99p’ file.txt > /tmp/file1

等同于

sed '27,99 !d' file.txt > /tmp/file2


方式二使用awk NR

awk 'NR >= 27 && NR <= 99' file.txt > /tmp/file3


方式三使用head和tail

head -99 file.txt | tail -73 > /tmp/file4

阅读全文>>

标签: linux vim sed awk

评论(0) 浏览(18844)

linux shell 将多行文件转换为一行

2014-5-8 杜世伟 Linux

说实话,虽然对shell编程包括awk有所了解,但是对sed的多行与一行的处理还是不甚理解,在网上搜罗了一篇文章觉得还不错,记录一下:
 
 
今天一个工程师问我,怎么将一个文件中的多行转换成一行。
      我给出了如下三种方法:
      1. 采用awk
      awk BEGIN{RS=EOF}'{gsub(/\n/," ");print}' file
      说明:awk默认将记录分隔符(record separator即RS)设置为\n,此行代码将RS设置为EOF(文件结束),也就是把文件视为一个记录,然后通过gsub函数将\n替换成空格,最后输出。
      2. 采用sed
      sed ':a ; N;s/\n/ / ; t a ; ' file
      说明:sed默认只按行处理,N可以让其读入下一行,再对\n进行替换,这样就可以将两行并做一行。但是怎么将所有行并作一行呢?可以采用sed的跳转功能。:a 在代码开始处设置一个标记a,在代码执行到结尾处时利用跳转命令t a重新跳转到标号a处,重新执行代码,这样就可以递归的将所有行合并成一行。

阅读全文>>

标签: linux shell awk

评论(0) 浏览(9536)

linux awk 改变文件的内容的分隔符并添加行号

2013-6-9 杜世伟 awk

linux awk 改变文件的内容的分隔符并添加行号以下是范例内容,使用‘,’分隔符
$ cat testfile.out
3232,32332,54545,34
3233,45645,23233,23
1211,1212,4343,434
3434,121121,121,33
替换文件内容中,为|并且为每行添加新的行号,输出结果为:
1|3232|32332|54545|34
2|3233|45645|23233|23
3|1211|1212|4343|434
4|3434|121121|121|33

阅读全文>>

标签: linux tr awk

评论(0) 浏览(7945)

linux 合并多个连续的行

2013-6-8 杜世伟 awk

linux 合并多个连续的行
文件内容为:
$ cat infile.txt 
aid=33
pw=3
nn=90
aid=32
pw=30
nn=70
aid=56
pw=3
nn=93

组合或合并上述文件的每三个连续行,使输出变为:
aid=33,pw=3,nn=90
aid=32,pw=30,nn=70
aid=56,pw=3,nn=93

阅读全文>>

标签: linux awk bash read

评论(0) 浏览(14319)

linux 将0附加到单位数字日期

2013-6-8 杜世伟 awk

linux 将0附加到单位数字日期
日期的文件格式为:month/day/year format. 
$ cat date.txt 
3/4/2013
3/10/2013
10/4/2013
12/10/2012
要求将0附加到单位数字日期,输入格式为
03/04/2013
03/10/2013
10/04/2013
12/10/2012

阅读全文>>

标签: linux awk

评论(0) 浏览(3917)

linux 删除换行符的方法小结

2013-5-16 杜世伟 Linux

linux 删除换行符的方法小结

工作中时而不时会遇到,替换文件中换行符把内容转换为一行,以下是笔者总结的一些常见的实现方式,仅供参考!转载请注明出处

方法一:

通过awk
awk BEGIN{RS=EOF}'{gsub(/\n/," ");print}' file.txt
说明:awk默认将记录分隔符(record separator即RS)设置为\n,此行代码将RS设置为EOF(文件结束),也就是把文件视为一个记录,然后通过gsub函数将\n替换成空格,最后输出
方法二:
通过vim打开文件,然后输入命令:%s/\n//g替换所以的换行符
方法三:
通过使用td命令,cat file.txt | tr '\n' ' '
注意tr最后那个参数是空格,否则会报错

阅读全文>>

标签: linux sed shell awk cat

评论(0) 浏览(8115)

Powered by emlog 沪ICP备2023034538号-1