mac 文本处理命令分享

*/-->

pre.src {background-color: #292b2e; color: #b2b2b2;}

pre.src {background-color: #292b2e; color: #b2b2b2;}

pre.src {background-color: #292b2e; color: #b2b2b2;}

pre.src {background-color: #292b2e; color: #b2b2b2;}

mac 文本处理命令分享

1 sed

默认sed命令只是对标准输出做变更,不会影响到源文件,但是如果加了-i之后,会变更源文件。mac中的-i参数使用和linux有差异。后面只对mac的命令做说明。
-i '' i后加上备份文件名称才能影响到源文件。''默认是和原文件名相同,不产生备份文件。 本测试的文件为csophys。其中的内容如下:
cat csophys
I am the first line!
line second is me.

1.1 文本查找替换

sed -i '' 's/line/LINE/' csophys

1.2 文本插入

a在目标行之后插入,i在目标行之前插入。

sed '1 a\
insert
' csophys sed '1 i\
insert
' csophys sed '$line a\
xxxx
' file

$line这是目标行,也可以用正则来定位所有匹配的行。

sed '/line/ i\
insert
' csophys

也可以直接在匹配行之后插入其他文件的内容,比如:

sed '/first/r command.org' csophys

1.3 文本行删除

删除文本中的行

sed '/se.*/d' csophys

1.4 执行sed脚本

cat sed.rule
s/first/FIRST/
s/second/SECOND/
sed -f sed.rule csophys
I am the FIRST line!
line SECOND is me.

更多命令可以参考 man sed。

2 awk

awk '{pattern + action}' {filenames}

awk是在每行处理文本的时候,默认按照空格隔离每一个域,对每一个域做处理。也可以直接通过在awk 后加 -F. 指定分隔符。

 ls -l | awk '/rw/{print "第三列:"$3"\t|\t""第5列:"$5}'

第三列:csophys | 第5列:3154
第三列:csophys | 第5列:42
第三列:csophys | 第5列:5253
第三列:csophys | 第5列:32
第三列:csophys | 第5列:35
ls -l | awk 'BEGIN{OFS="&";count=10;for(i=0;i<3;i++)print"开始"}/rw/{print ++count,NR,$3,$5}END{print "结束"}'
开始
开始
开始
&&csophys&
&&csophys&
&&csophys&
&&csophys&
&&csophys&
&&csophys&
结束

awk中可以使用printf来格式化输出,也可以使用if判断语句

ls -l | awk 'BEGIN{OFS="&";count=10;for(i=0;i<3;i++)print"开始"}/rw/{if(NR>3) printf("printf:%s,%s,%s,%s\n",++count,NR,$3,$5)}END{print "结束"}'
<i++)print"开始"}/rw/{if(NR>) printf("printf:%s,%s,%s,%s\n",++count,NR,$3,$)}END{print "结束"}'
开始
开始
开始
printf:11,4,csophys,42
printf:12,5,csophys,5253
printf:13,6,csophys,32
printf:14,7,csophys,35
结束

awk 内部变量名的含义如下:

变量名    含义
ARGC 命令行变元个数
ARGV 命令行变元数组
FILENAME 当前输入文件名
FNR 当前文件中的记录号
FS 输入域分隔符,默认为一个空格
RS 输入记录分隔符
NF 当前记录里域个数
NR 到目前为止记录数
OFS 输出域分隔符
ORS 输出记录分隔符

更加强大的功能参考 man awk。
或者参考博客:

  1. http://www.zsythink.net/archives/tag/awk/
  2. https://www.tutorialspoint.com/awk/awk_quick_guide.htm

3 sort

sort [-ntkr] 文件名
#-n 采用数字排序
#-t 指定分隔符
#-k 指定第几列
#-r 反向排序

ls -l | awk '/rw/{print $5}' | sort -n -r
ls -l | sort -k  -n -r
-rw-r--r-- csophys staff 11:25 passwd
-rw-r--r-- csophys staff 22:29 command.org
-rw-r--r-- csophys staff 23:14 csophys
-rw-r--r-- csophys staff 11:37 test
-rw-r--r-- csophys staff 22:59 sed.rule
total
ls -l | sort -k  -t ":"
total
-rw-r--r-- csophys staff 23:14 csophys
-rw-r--r-- csophys staff 11:25 passwd
-rw-r--r-- csophys staff 22:31 command.org
-rw-r--r-- csophys staff 11:37 test
-rw-r--r-- csophys staff 22:59 sed.rule

4 uniq

uniq一般需要和sort配合使用。uniq 的作业是删除连续相同的行,所以在sort之后使用效果很好。-c 参数可以打印出重复的次数。

ls -l | awk '/rw/{print $3}'
csophys
csophys
csophys
csophys
csophys ls -l | awk '/rw/{print $3}' | uniq -c
csophys

5 其他

  1. cut。cut可以截取指定分隔符隔开后的具体某一列或者某几列。
  2. tr。tr命令主要作用是在于文本转换或者删除
  3. paste。paste作用是在于按照指定的分隔符按照行进行合并
  4. split。使用split可以实现文件的分割,支持按照行数分割和按照大小分割两种模式。

Author: 陈胜

Created: 2017-09-04 Mon 23:16

Validate

mac 文本处理命令分享的更多相关文章

  1. Mac快捷键与命令学习

    最近开始使用mac air,以前从来没有接触过IOS系统,各种操作捉急.Mac快捷键相当多,遇到各种操作不会就只好百度,然后整理了一堆有用或者没用的命令,一股脑儿列在下面.其中有不少命令是和linux ...

  2. MAC下GitHub命令操作

    由于GitHub实在太有用了~~ ,各种源代码,开源工程,经常需要下载下来使用和学习,或者自己的代码需要上传之类的,尽管有"GitHub for Mac"工具,但是作为一名程序猿! ...

  3. 【Xamarin挖墙脚系列:mac 终端 常用命令+Mac OS X的快捷键+beamoff 】

    原文:[Xamarin挖墙脚系列:mac 终端 常用命令+Mac OS X的快捷键+beamoff ] 基本命令 1.列出文件 ls 参数 目录名        例: 看看驱动目录下有什么:ls /S ...

  4. (转)Linux企业运维人员常用的150个命令分享

    Linux企业运维人员常用的150个命令分享 原文:http://www.jb51.net/article/127014.htm 本文将向大家介绍Linux企业运维人员常用的150个命令,如有不足之处 ...

  5. 编程小技巧之 Linux 文本处理命令

    合格的程序员都善于使用工具,正所谓君子性非异也,善假于物也.合理的利用 Linux 的命令行工具,可以提高我们的工作效率. 本文简单的介绍三个能使用 Linux 文本处理命令的场景,给大家开阔一下思路 ...

  6. Android中实现APP文本内容的分享发送与接收方法简述

    谨记(指定选择器Intent.createChooser()) 开始今天的内容前,先闲聊一下: (1)突然有一天头脑风暴,对很多问题有了新的看法和见解,迫不及待的想要分享给大家,文档已经写好了,我需要 ...

  7. MAC的终端命令

    今天小研究了一下MAC的终端命令,主要为了方便调试程序用,XCODE用不来啊... 在这里记下..防止丢失 pwd 当前工作目录 cd(不加参数) 进root cd(folder) 进入文件夹 cd ...

  8. mac 终端 svn 命令(转)

    mac 终端 svn 命令 1.将文件checkout到本地目录 svn checkout path(path是服务器上的目录)   例如:svn checkout svn://192.168.1.1 ...

  9. mac安装GNU命令行工具

    mac安装GNU命令行工具 2.添加的repo     tap home/dupes        brew install coreutils  binutils  diffutils  ed -- ...

随机推荐

  1. bzoj2333[SCOI2011]棘手的操作 洛谷P3273 [SCOI2011]棘手的操作

    2333? 先记一下吧,这题现在全部都是照着题解做的,因为怎么改都改不出来,只好对着题解改,以后还要再做过 以后再也不用指针了!太恶心了!空指针可不止直接特判那么简单啊,竟然还要因为空指针写奇怪的分类 ...

  2. 水题 Codeforces Beta Round #70 (Div. 2) A. Haiku

    题目传送门 /* 水题:三个字符串判断每个是否有相应的元音字母,YES/NO 下午网速巨慢:( */ #include <cstdio> #include <cstring> ...

  3. Ghost系统操作记录

    1.下载Symantec Ghost应用. 2.下载老毛桃PE工具箱. 3.利用老毛桃PE工具箱制作启动U盘. 4.拷贝Ghost应用至U盘. 5.设置计算机启动顺序为U盘启动. 6.重启计算机进入P ...

  4. TC 609DIV2(950)

    Problem Statement      Vocaloids Gumi, Ia, and Mayu love singing. They decided to make an album comp ...

  5. SharePoint Server 2013 Search Service stop

    管理中心 - 系统设置 - 管理服务器上的服务:“搜索主机控制器服务” 停止即可,服务器管理 - 工具 - 服务 :sharepoint search host controller 服务会自动禁用.

  6. Repeater 的使用

    <HeaderTemplate></HeaderTemplate>  头模板——在加载开始执行一遍 <FooterTemplate></FooterTempl ...

  7. Android使用Gson(相当于C#的Newtonsoft.Json)非常好用

    C#转Java有一段时间了,之前做ASP.NET WebAPI微软竟将第三方类库Newtonsoft.Json作为VS新建MVC和WebAPI项目默认必备的Json工具Nuget包,可想而知这个包有多 ...

  8. 纯css实现的三级水平导航菜单

    vscode练习使用开发纯css的三级水平导航菜单.先上图: 1.html5布局 <html> <head> <meta charset="UTF-8" ...

  9. [Windows Server 2008] 404错误设置方法

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com ★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频. ★ 本节我们将带领大家:如何设置4 ...

  10. 半斤八两中级破解 (四) TCP_UDP协议转向本地验证

    首先要用抓包工具判断是哪种协议,根据封包助手来看,教程中给出的例子是个TCP协议的,此时要记录下包的: 源地址,源端口     目的地址,目的端口   源包大小  目的包大小 然后再重新运行抓包工具和 ...