linux学习我用 Linux首页投稿(暂停使用,暂停投稿)

linux(十)字符转换

2016-09-09  本文已影响53人  alonwang

tr

删除一段信息中的文字,进行文字信息的替换

tr [-ds] SET1

eg

last | tr '[a-z]' '[A-Z]'

将小写字符转换为大写字符

cat /etc/passwd | tr -d ':'

删除 `:`

unix2dos filename 

转换文件换行方式为window类型
dos2unix filename
转换文件换行方式为unix类型

col

处理特殊字符

col [-xb]

eg

cat -A /etc/passwd | col -x

将[tab]表示为对等的空白键而不是`^l`

join

处理两个文件中有相同数据的那一行

join [-ti12] file1 file2

eg

join -t ':' /etc/passwd /etc/shadow | head -n 3

因为两个文件的开头都是root,并且以:作为分隔符,这样两个文件的第一行就放在一起了
就像这样

  root:x:0:0:root:/root:/bin/zsh:$6$V6wHgIfF$gBrafGiGZDiBDkQHFaYmojtTfjny4ReYZWXwrdx8kUWwe0GQNWwP4ee.gIRFWDD/AicEVRU3NsgOQulXPH8at.:17023:0:99999:7:::
  daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin:*:17001:0:99999:7:::
  bin:x:2:2:bin:/bin:/usr/sbin/nologin:*:17001:0:99999:7:::

下面给出一个稍微复杂一点的示例

head -n 3 /etc/passwd /etc/group

输出如下

root:x:0:0:root:/root:/bin/zsh
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin

==> /etc/group <==
root:x:0:
daemon:x:1:
bin:x:2:

可以看出,/etc/passwd 的GID在第四项,/etc/group的在第三项,怎么把他们结合起来呢.

join -t  ':' -1 4 /etc/passwd -2 3 /etc/group | head -n 3

输出是这样的

0:root:x:0:root:/root:/bin/zsh:root:x:
1:daemon:x:1:daemon:/usr/sbin:/usr/sbin/nologin:daemon:x:
2:bin:x:2:bin:/bin:/usr/sbin/nologin:bin:x:

past

join的简化版,直接将两行贴在一一起,以tab隔开

past [-d] file1 file2

eg

先用cat读出/etc/group,再将 /etc/group /etc/shadow 和标准输入贴在一起,只取出前三行
cat /etc/group | paste /etc/group /etc/shadow - | head -n 3

expand

用来将[tab]转换为空白键

expand [-t] file

split

大文件分割成小文件

split [-bl] file PREFIX

eg

将service 分割成300kb大小

split -b 300k /etc/services services

将分割好的文件命名为servicesaa servicesab....的形式

将分割文件合并(并不限于此)

cat services* >> servicesback

xargs

用来将标准输入切割成参数并转发给需要的命令

xargs [-0epn] command

eg

取出/etc/passwd的第一项,取三行并且使用id命令查询

cut -d ':' -f 1 /etc/passwd | head -n 3 | xargs -n 1 id

上一篇下一篇

猜你喜欢

热点阅读