重定向和管道练习题

1、将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中

答案(两种方法):

tr 'a-z' 'A-Z' < /etc/issue > /tmp/issue
 
cat /etc/issue | tr 'a-z' 'A-Z' > /tmp/issue

解析:

第一种方法用的输入输出重定向,是把/etc/issue文件作为tr命令的输入,然后输出到/tmp/issue; 第二种方法是用的管道和输出重定向,把cat命令的输出,作为tr命令的输入,然后结果输出到/tmp/issue

2、将当前系统登录用户的信息转换为大写后保存至/tmp/who.out文件中

答案:

1
who |tr 'a-z' 'A-Z' > /tmp/who.out

解析:

who输出的登录信息,作为tr命令的输入,然后tr命令的输出重定向到/tmp/who.txt文件


3、一个linux用户给root发邮件,要求邮件标题为”help”,邮件正文如下:

Hello, I am 用户名,The system version is here,please help me to check it ,thanks!
操作系统版本信息

答案:

1
2
3
4
cat <<EOF | mail -s help root
>Hello, I am $USER,The system version is here,please help me to check it ,thanks!
>My OS is `cat /etc/centos-release`
>My OS's Kernel is `uname -a`

解析:

先用cat <<EOF来把下面行的输入信息 输出出来,作为后面mail命令的输入。


4、将/root/下文件列表,显示成一行,并文件名之间用空格隔开

答案:

1
ls -1 |tr '\n' ' '

解析:

ls显示所有文件行,用tr命令把尾部的\n替换成空格


5、计算1+2+3+..+99+100的总和

答案:

1
echo {1..100} |tr ' ' '+' |bc

解析:

echo输出100个数,然后把中间的空格转化为加号,然后再传给bc计算


6、删除Windows文本文件中的‘^M’字符

答案:

1
cat windows.txt |tr -d "\r"

解析:


7、处理字符串“xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4”,只保留其中的数字 和空格

答案:

1
echo “xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4” | tr -d "^0-9 "

解析:

-d选项是delete的意思,^是非的意思,0=9是数字,后面跟一个空格,组合起来就是非数字和空格,然后-d删除


8、将PATH变量每个目录显示在独立的一行

答案:

1
echo $PATH | tr ":" "\n"

解析:

冒号转化为换行


9、将指定文件中0-9分别替代成a-j

答案:

1
tr "0-9" "a-j" file

解析:


10、将文件中每个单词(由字母组成)显示在独立的一行,并无空行

答案:

1
cat 1.log |tr -c 'a-zA-Z' '\n'

解析:

cat命令的输出,作为tr命令的输入,-c选项是选择补集,即不是字母的单词

posted @ 2018-03-09 10:17  莫孟林  阅读(542)  评论(0编辑  收藏  举报