鱼C论坛

 找回密码
 立即注册
查看: 2741|回复: 0

[学习笔记] 认识bash shell5--管道命令(pipe)之字符转换命令

[复制链接]
发表于 2017-8-7 17:45:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
字符转换命令tr, col, join ,paste, expand
① tr:可以用来删除一段讯息当中的文字,或者是进行文字讯息的替换
tr [-ds] SET1
-d :删除讯息当中的 SET1 这个字符串;
-s :取代掉重复的字符!
例如:将 last 输出的讯息中,所有的小写发成大写字符:last |tr ‘[a-z]’ ‘[A-Z]’
将 /etc/passwd 输出的讯息中,将冒号 (:)删除:cat /etc/passwd | tr -d ‘:’
将 /etc/passwd 转存成 dos 断行到 /root/passwd 中,再将 ^M 符号删除:
cp /etc/passwd /root/passwd && unix2dos /root/passwd
cat /root/passwd | tr -d '\r' > /root/passwd.linux

② col:可以用来简单的处理将tab按键取代为空格键
col [-xb]
-x 将tab键转换成对等的空格键
-b 在文字内有反斜杠(/),仅保留反斜杠最后接的那个字符
例如:利用 cat -A 显示出所有特殊按键,最后以 col 将 [tab] 转成空白:cat -A /etc/man.config |col -x |cat -A |more

③ join:处理两个档案时,有相同数据的那一行,将它加在一起。需要注意的是,在使用join之前,所需处理的档案应该要事先经过排序(sort)处理!否则有些比对的项目会被略过。
join [-ti12] file1 file2
-t :join 默认以空格符分隔数据,并且比对『第一个字段』的数据,如果两个档案相同,则将两笔数据联成一行,且第一个字段放在第一个!
-i :忽略大小写的差异;
-1 :这个是数字 1 ,代表第一个档案要用哪个字段来分析;
-2 :代表第二个档案要用哪个字段来分析
例如:用 root 的身份,将 /etc/passwd 与 /etc/shadow 相关数据整合成一栏(这两个档案的最左边字段都是账号,且以 : 分隔):join -t ‘:’/etc/passwd  /etc/shadow
/etc/passwd 第四个字段是 GID , GID 记录在/etc/group 当中的第三个字段,如何将两个档案整合: join -t ':' -1 4 /etc/passwd -2 3 /etc/group

④ paste:paste 就要比 join 简单多了,相对于 join 必须要比对两个档案的数据相关性, paste 就直接『将两行贴在一起,且中间以 [tab] 键隔开。
paste [-d] file1 file2
d :后面可以接分隔字符。预设是以 [tab] 来分隔的!
- :如果 file 部分写成 - ,表示来自 standard input 的资料。
例如:将 /etc/passwd 与 /etc/shadow 同一行贴在一起:paste /etc/passwd /etc/shadow

⑤ expand:将 [tab] 按键转成空格键,unexpand 可以将空白转成 [tab] 。
expand [-t] file
-t :后面可以接数字。一般来说,一个 tab 按键可以用 8 个空格键取代。也可以自行定义一个 [tab] 按键代表多少个字符。
例如:将 /etc/man.config 内行首为 MANPATH 的字样就取叏出;仅取前三行;将 [tab] 按键设定成 6 个字符;将所有的符号都列出来
grep '^MANPATH' /etc/man.config | head -n 3 | expand -t 6 | cat -A

评分

参与人数 1鱼币 +1 收起 理由
小甲鱼 + 1

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 02:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表