linux(十)字符转换

tr

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

tr [-ds] SET1

  • -d : 删除信息中SET1这个字符串
  • -s : 取代掉重复的字符。
last | tr '[a-z]' '[A-Z]'

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

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

删除 `:`

操作系统间的文件换行转换

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

col 处理特殊字符

col [-xb]

  • -x : 将tab转换成对等的空白键
cat -A /etc/passwd | col -x

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

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

join [-ti12] file1 file2

  • -t : join默认以空白字符分隔数据,并且对比第一个字段的数据,
    如果两个文件相同,则将两笔数据联成一行,且第一个字段放在第一个.

  • -i : 忽略大小写差异

  • -1 : 数字1,代表"第一个文件要用那个字段来分析"的意思

  • -i : 代表"第二个文件要用那个字段来分析"的意思

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

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

  • -d : 后接分隔字符.默认以tab分隔
  • - : 如果file部分写成-,代表标准输入的数据

eg

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

cat /etc/group | paste /etc/group /etc/shadow - | head -n 3

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

expand [-t] file

  • -t : 后面接数字,代表一个[tab]用多少空白字符表示

split 大文件分割成小文件

split [-bl] file PREFIX

  • -b : 后接欲分区成的文件大小,可加单位,b,k,m...
  • -l : 以行数进行分区

将service 分割成300kb大小

split -b 300k /etc/services services

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

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

cat services* >> servicesback

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

xargs [-0epn] command

  • -0 : 如果stdin有特殊字符,还原它们
  • -e : eof,后接表示终止的字符(串)
  • -p : 执行每个指令的argument都会询问使用者
  • -n : 后接次数,表示一次使用几个参数

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

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

  • CRLF : 回车(CR, ASCII 13, \r) 换行(LF, ASCII 10, \n)。

  • 这两个ACSII字符不会在屏幕有任何输出,但在Windows中广泛使用来标识一行的结束。而在Linux/UNIX系统中只有换行符。

  • 如果有时候需要stdin或stdout,可以用-代替

你可能感兴趣的:(linux(十)字符转换)