linux基础-9.重定向、管道

重定向

I/O重定向允许我们将命令的输入和输出重定向到文件中

输出重定向

标准错误是不能通过这个方式的

>

覆盖添加

echo abc > a.txt

>>

追加添加

echo 123 >> a.txt

注:以上只能将标准输出重定向到文件中,标准出错是不能通过此方式输出到文件

只需要在后面加上 2>&1 即可

./xxx> test.log 2>&1 

输入重定向

<

查看文件内容

cat < data.txt

<<

创建多行文本

$ cat << EOF > message.txt
> Hello, this is a custom message!
> 你好
> EOF

管道

Linux所提供的管道符“|”将两个命令隔开

管道符左边命令的输出就会作为管道符右边命令的输入

连续使用管道意味着第一个命令的输 出会作为 第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推

例如查看文件的行数

cat xxx.txt | wc -l

就是将 cat xxx.txt的输出作为wc -l 的输入

xargs命令

有些命令不支持管道符来传递参数

比如: 搜索/etc目录下的所有".conf"结尾的文件信息,然后以详细列表形式显示

 find /etc -name "*.conf" | ls -l     # 不支持

可以通过xargs就可以实现这个功能

find /etc -name "*.conf" | xargs ls -l
  • -p 当每次执行一个argument的时候询问一次用户。
  • -i 将xargs的每项名称,一般是一行一行赋值给 {},可以用 {} 代替。
cat a.txt | xargs echo
cat a.txt | xargs -i  echo {}

grep

grep是一个可以利用”正则表达式”进行”全局搜索”的工具,grep会在文本文件中按照指定的正则进行全局搜索,并将搜索出的行打印出来

参数

-A<显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容。
-b 在显示符合范本样式的那一行之外,并显示该行之前的内容。
-c 计算符合范本样式的列数。
-C<显示列数>或-<显示列数>  除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
-d<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。
-e<范本样式> 指定字符串作为查找文件内容的范本样式。
-E 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。
-f<范本文件> 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。
-F 将范本样式视为固定字符串的列表。
-G 将范本样式视为普通的表示法来使用。
-h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
-H 在显示符合范本样式的那一列之前,标示该列的文件名称。
-i 忽略字符大小写的差别
-v 反转查找。

测试文件

I aaam teacher
I aaaaaam student
I like Linux
I like JAVA
Hello World
世界,你好!
 
12312434
324828
fdjsoifjidosa
joijofids.
joijiodsf.
 
#jidfjisoaf
#fjidsfoijsdaifo

普通搜索

grep "L" test.txt

不区分大小写

grep -i "L" test.txt

输出i开头,并且不区分大小写的行

grep -i "^i" test.txt

-n代表显示匹配行和行号

打印匹配前后的行

# 打印匹配行前两行
grep Linux test.txt  -n -B2
# 打印匹配行后两行
grep Linux test.txt  -n -A2
# 打印匹配行前后两行
grep Linux test.txt  -n -C2

使用 -c 选项即可只统计符合条件的总行数,而不会打印出行。

grep "Linux" test.txt  -c

排除匹配的行

grep "Linux" test.txt  -v

匹配空行

grep "^$" test.txt -n

"."点表示任意一个字符, 有且只有一个, 不包含空行

grep "2.." test.txt -n

"*"表示找出前一个字符0次或一次以上

grep "12*" test.txt -n

".*"表示所有内容, 包括空行

grep ".*" test.txt -n

[abc]表示匹配中括号中任意一个字符, a或b或c,常见的形式如下

  • [a-z]匹配所有小写单个字母[A-Z]匹配所有单个大写字母
  • [a-zA-Z]匹配所有的单个大小写字母
  • [0-9]匹配所有单个数字
  • [a-zA-ZO-9]匹配所有数字和字母
grep "[abc]" test.txt -n 

扩展正则表达式

在使用-E选项时,grep才支持扩展正则表达式,不使用-E选项时,grep默认只支持 基本正则表达式。

grep -E  "H?ello" test.txt -n

和管道符联用

cat test.txt | grep -E  "H?ello"  -n
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值