linux多路数据接收存盘,Linux初体验之练习篇(七)

Linux初体验之练习篇(七)tr

IO重定向

神奇的自动挂载tr

主要用途

转换或删除字符tr - translate or delete characters

tr [OPTION]... SET1 [SET2]

tr命令是一个强大的字符转换工具,可以对来自标准输入的字符进行各种转换,包括字符集对应转换、删除或都取字符补集、压缩和格式调整。格式调整包括换行、回车、加入制表符等。

常用参数-c, -C:--complemen, 取字符集的补集

-d:--delete, 删除所有属于第一个字符集的字符

-s:--squeeze-repeats, 压缩连续重复的字符为单独的一个字符

-t:--truncate-set1, 将第一个字符集对应的字符转换为第二个字符集对应的字符

tr对字符的格式调整\\     backslash

\a     audible BEL

\b     backspace

\f     form feed     # 换页

\n     new line

\r     return

\t     horizontal tab

\v     vertical tab

tr可用的字符集:使用格式:tr '[:lower:]' '[:upper:]'

[:alnum:]:字母和数字

[:alpha:]:字母

[:cntrl:]:控制(非打印)字符

[:digit:]:数字

[:graph:]:图形字符

[:lower:]:小写字母

[:print:]:可打印字符

[:punct:]:标点符号

[:space:]:空白字符

[:upper:]:大写字母

[:xdigit:]:十六进制字符

使用示例见末尾的练习IO重定向

我们都知道,所谓程序,可简单表示为:程序=指令+数据,而在Linux系统中,数据流可分为三大类:标准输入:standard input ——0 默认接受来自键盘的输入

标准输出:standard output ——1 默认输出到终端窗口

标准错误输出:standard error ——2 默认输出到终端窗口

所以,IO重定向就是改变IO输入输出的默认位置!而IO重定向的方式就要有重定向符号与管道两种方式。

另外,在Linux中,每个文件都有一个文件描述符 fd (file descriptor), 而这些文件描述符fd都会关联到一个设备上,Linux就是就是通过这些文件描述符来访问文件的!

查看文件描述符fd:[root@centos6 ~]# cd /proc

0a685625263c444088442bc19b596cae.png

1. 输出重定向操作符格式:命令  操作符   文件名

>   把STDOUT重定向到文件,文件内容会被覆盖

2>  把STDERR重定向到文件

&>  把所有输出重定向到文件

>>  原有内容基础上,追加内容

>|  强制覆盖2>: 覆盖重定向错误输出数据流

2>>: 追加重定向错误输出数据流

合并标准输出和错误输出为同一个数据流进行重定向:

&>:覆盖重定向

&>>:追加重定向

COMMAND > /path/to/file.out 2>&1 (顺序很重要)

COMMAND >> /path/to/file.out 2>>&1

():多条命令输出重定向

(cal2007;cal2008) > all.txt

标准输出和错误输出各自定向至不同位置:

COMMAND > /path/to/file.out 2> /path/to/error.out

注:为避免文件被误覆盖:有以下两个功能选项# set -C: 禁止覆盖,但可追加

# set +C: 允许覆盖

2. 输入重定向操作符格式:命令  操作符   文件名

命令  操作符   终止词

<

3. 管道在linux系统中,管道的主要功能是将其他程序的输出结果直接导出到另一程序,

来做输入数据,即将前一程序的输出作为后一个程序的输入,符号为"|"。

管道的语法格式为:

COMMAND1 | COMMAND2 | COMMAND3 ...

将标准错误输出一起输入管道,命令格式为:

COMMAND1 |& COMMAND2 |& COMMAND3 ...

4. tee: 重定向到多个目标

tee

主要用途

重定向数据到文件且保存一个副本作为后续命令的输入tee - read from standard input and write to standard output and files

tee [OPTION]... [FILE]...

tee命令作为重定向数据的一个得力工具,其最大的特点是能够“分流”数据,一边可以重定向数据到目标文件,一边可以将重定向的数据保存一个副本作为后续命令的标准输入。一句话,就是把数据重定向到目标文件并输出到屏幕。

常用参数-a:--append,重定向时追加而不覆盖

-i:--ignore-interrupts, 忽略中断信号

使用示例[root@centos6 ~]# ls | tee /testdir/ls.log

anaconda-ks.cfg

Desktop

Documents

Downloads

install.log

install.log.syslog

Music

Pictures

Public

Templates

Videos

[root@centos6 ~]# cat /testdir/ls.log

anaconda-ks.cfg

Desktop

Documents

Downloads

install.log

install.log.syslog

Music

Pictures

Public

Templates

Videos

[root@centos6 ~]#[root@centos6 ~]# ls | tee out.txt | cat -n

1anaconda-ks.cfg     2Desktop     3Documents     4Downloads     5install.log

6install.log.syslog     7Music     8Pictures     9Public

10Templates    11Videos

[root@centos6 ~]# cat out.txt

anaconda-ks.cfg

Desktop

Documents

Downloads

install.log

install.log.syslog

Music

Pictures

Public

Templates

Videos

[root@centos6 ~]#神奇的自动挂载

在centos 6下有个神奇的自动挂载文件:misc[root@centos6 ~]# rpm -i /misc/cd/Packages/SOFTNAME

虽然df命令查不出其痕迹:[root@centos6 ~]# dfFilesystem     1K-blocks    Used Available Use% Mounted on

/dev/sda2      100660656 4614984  90925672   5% /

tmpfs             953648     224    953424   1% /dev/shm

/dev/sda1         194241   39141    144860  22% /boot

/dev/sda3       20027260  333820  18669440   2% /testdir

/dev/sr0         3824484 3824484         0 100% /media/CentOS_6.8_Final

神奇的是可直接使用 # rpm -i /misc/cd/Packages/SOFTNAME 直接挂载。练习一

1、使用别名命令,每日将/etc/目录下所有文件,备份到/testdir/下独立的新目录下,并要求新目录格式为backupYYYY-mm-dd ,备份过程可见。

2、先创建/testdir/rootdir目录,再复制/root所有下文件到该目录内,并要求保留原有权限。1、

[root@centos6 testdir]# alias backup='cp -rv /etc/ /testdir/backup`date +%F`'

598cbc13160496836b6d05ae2621b5e6.png2、

[root@centos6 ~]# cp -r --preserv=mode /root/ /testdir/rootdir

5df4c9adfde7029fa66884b3e7fc452f.png练习二

1、将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中[root@centos6 ~]# tr 'a-z' 'A-Z' /tmp/issue.out

d14478d7fd05f3735a7027b9935a4125.png

2、将当前系统登录用户的信息转换为大写后保存至/tmp/who.out文件中[root@centos6 ~]# w | tr 'a-z' 'A-Z' > /tmp/who.out

84b496c2164e22b618c84718f4501ab2.png

3、一个linux用户给root发邮件,要求邮件标题为”help”,邮件正文如下: Hello, I am 用户名,the system version is here,pleasehelp me to check it ,thanks! 操作系统版本信息[liansir@centos6 ~]$ echo -e "Hello, I am $(whoami), the system version is here, please help me to check it,

thanks! \n$(lsb_release -a)" | mail -s help root

[liansir@centos6 ~]$

56a2aea2f06b3ec316202067139a3bb8.png

4、将/root/下文件列表,显示成一行,并文件名之间用空格隔开。[root@centos6 ~]# ls -x

file1  file10  file2  file3  file4  file5  file6  file7  file8  file9

[root@centos6 ~]# ls --format=horizontal

file1  file10  file2  file3  file4  file5  file6  file7  file8  file9

或:

[root@centos6 ~]#

[root@centos6 ~]# ls -a | tr '\n' ' '

7d48d4f04f3d2643f10b496f6fc50044.png

238bc43d0df01c340bd650b27322883a.png

5、file1文件的内容为:”1 2 3 4 5 6 7 8 9 10” 计算出所有数字的总和[root@centos6 ~]# echo "1 2 3 4 5 6 7 8 9 10" | tr ' ' + | bc

55

[root@centos6 ~]#

[root@centos6 ~]# echo $[`echo "1 2 3 4 5 6 7 8 9 10" | tr ' ' + `]

55

[root@centos6 ~]#

[root@centos6 ~]# echo "1 2 3 4 5 6 7 8 9 10" > file2

[root@centos6 ~]# tr ' ' + 

55

[root@centos6 ~]#

[root@centos6 ~]# cat file3

1 2 3 4 5 6 7 8 9 10

# 以下两种方法应该要优于上面的,假如一个文件中有1....10000的数的话。。。。

[root@centos6 ~]# tr " " "+" 

55

[root@centos6 ~]# tr ' ' + 

55

[root@centos6 ~]#

6、删除Windows文本文件中的'^M'字符[root@centos6 ~]# tr -d '\r'  win2.txt

dffd6cb1843bddbcae3abf8a843adad2.png

8327dd28231b987399473198bb64524f.png

7、处理字符串“xt.,l 1 jr#!$mn2 c*/fe3 uz4”,只保留其中的数字和空格[root@centos6 ~]# echo 'xt.,l 1 jr#!$mn2 c*/fe3 uz4' | tr -cd '[:digit:] \n'

04329620a52004ed9937500688fc8ab9.png

8、将PATH变量每个目录显示在独立的一行[root@centos6 ~]# echo $PATH | tr ':' '\n'

53507f300707b51b8c022d37ed0de580.png

9、删除指定文件的空行[root@centos6 ~]# cat win.txt |tr -d '\r' |tr -s '\n'

3df84e68b6c189d842b90f77ea6723bf.png

10、将文件中每个单词(字母)显示在独立的一行,并无空行[root@centos6 ~]# cat f1 | tr -cs '[:alpha:]' '\n'

f335776ca5180dc9240dabb4da3ba7dd.png

止战

2016.8.1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值