linux中如何过滤文件,以及更换文件内容

第1章 重定向
1.1 > 或1>
[标准输出]重定向 先清空文件的内容 然后再追加到文件的结尾
[root@oldboyedu43 data]# cat /root/data/oldboy.txt
I am studying linux.
oldboyedu.com
I
oldboy
linux.
[root@oldboyedu43 data]# echo "blog oldboyedu com"
blog.oldboyedu.com
[root@oldboyedu43 data]# echo "blog oldboyedu com" >/root/data/oldboy.txt
[root@oldboyedu43 data]# cat /root/data/oldboy.txt
blog oldboyedu com

1.2 >> 或1>>
[标准输出]追加重定向 把内容追加到文件的结尾
[root@oldboyedu43 data]# echo "oldgirl">>/root/data/oldboy.txt
[root@oldboyedu43 data]# cat /root/data/oldboy.txt
blog.oldboyedu.com
oldgirl

1.3 2>
标准错误输出重定向 又名错误重定向 先清空文件的内容 把错误信息内容追加到文件的结尾
1.4 2>>
标准错误输出追加重定向 错误追加重定向 把错误信息内容追加到文件的结尾

[root@oldboyedu43 data]# cho "oldgirl">>/root/data/oldboy.txt
-bash: cho: command not found
[root@oldboyedu43 data]# cat /root/data/oldboy.txt
blog.oldboyedu.com
oldgirl
[root@oldboyedu43 data]# cho "oldgirl" 2>>/root/data/oldboy.txt
[root@oldboyedu43 data]# cat /root/data/oldboy.txt
blog.oldboyedu.com
oldgirl
-bash: cho: command not found

同时把正确的信息还有错误的信息 都记录下来
cho "oldboy" >>oldboy.txt 2>>oldboy.txt
cho "oldboy" >>oldboy.txt 2>&1
echo "qwer" &>>/data/yxd.txt

1.5 标准输入重定向
< 或 0< 标准输入重定向 告诉命令从哪里获取文件
[root@oldboyedu43 data]# echo "1 2 3 4 5 6 7 8">/root/data/renyi.txt
[root@oldboyedu43 data]# cat /root/data/renyi.txt
1 2 3 4 5 6 7 8
[root@oldboyedu43 data]# xargs -n2 <renyi.txt
1 2
3 4
5 6
7 8

<< 或 0<< 标准输入追加重定向
#向一个文件追加多行文字
cat >>/root/data/oldboy.txt<<EOF
I
am
renyi
EOF

第2章 如何预防误删除
1.把危险的参数放在最后面
2.尽量使用相对路径删除目录
3.删除的命令复杂化

第3章 find
可以查找出文件的内容或目录
3.1 find命令的格式
[root@oldboyedu43 data]# #find 在××× 什么类型 什么名字
[root@oldboyedu43 data]# find /root/ -type f(d为目录) -name "oldboy.txt"
/root/data/oldboy.txt

3.2 find命令找出的文件 如何传递给其他命令(ls rm)
需要find与|xargs 配合
[root@oldboyedu43 data]# find /root/ -type f -name "oldboy.txt"
/root/data/oldboy.txt
[root@oldboyedu43 data]# find /root/ -type f -name "oldboy.txt"|xargs ls -l
-rw-r--r--. 1 root root 106 Dec 11 18:23 /root/data/oldboy.txt
3.3 和find搭配使用
#找出以.txt结尾的文件
#find /root/ -type f -name "
.txt"
#表示 所有东西/任何东西
[root@oldboyedu43 data]# find /root/ -type f -name "
.txt"
/root/data/oldboy.txt
/root/data/renyi.txt
/root/data/li.txt
第4章 如何退出当前目录以及删除目录
退出到上一级目录删除 /root/data目录。(原来在/root/data)
rm -rf 加上目录ming
cd .. 可以返回到上一目录

第5章 如何过滤显示内容
5.1 方法1: grep
5.1.1 不显示要找的内容
[root@oldboyedu43 data]# grep -v "oldboy" /data/test.txt
test
liyao
5.1.2 显示要找的内容
grep "oldboy" /data/test.txt
oldboy

5.2 方法2: head显示文件的前两行
[root@oldboyedu43 data]# head -n2 /data/test.txt
test
liyao
[root@oldboyedu43 data]# head -2 /data/test.txt
test
liyao

5.3 方法3:awk
5.3.1 显示找的内容
[root@oldboyedu43 data]# awk '/oldboy/' /data/test.txt
oldboy
5.3.2 不显示找的内容
[root@oldboyedu43 data]# awk '!/oldboy/' /data/test.txt
test
liyao

5.4 方法4:sed
5.4.1 不显示要找的内容
[root@oldboyedu43 data]# sed '/oldboy/d' /data/test.txt
test
liyao
5.4.2 显示要找的内容
sed -n '/oldboy/p' /data/test.txt
oldboy
小结:
1.grep过滤
2.head ,tail
3.awk sed
第6章 递归创建目录
[root@oldboyedu43 data]# mkdir -p /oldboy/test
[root@oldboyedu43 data]# ls -l /oldboy/
total 4
drwxr-xr-x. 2 root root 4096 Dec 11 20:23 test

第7章 只查看指定的行数
seq 50 >/oldboy/ett.txt
7.1 .head + tail
[root@oldboyedu43 oldboy]# head -30 /oldboy/ett.txt |tail -11

7.2 .sed
sed默认输出每一行的内容,-n取消默认输出
显示第三十行的内容
[root@oldboyedu43 oldboy]# sed -n '30p' /oldboy/ett.txt
30
显示20到30行的内容
sed -n '从第20行到第30行p' /oldboy/ett.txt
[root@oldboyedu43 oldboy]# sed -n '20,30p' /oldboy/ett.txt

显示ett.txt文件的第25到35行。

7.3 awk
[root@oldboyedu43 oldboy]# awk 'NR==20,NR==30' /oldboy/ett.txt
[root@oldboyedu43 oldboy]# #NR 在awk中表示行号

7.4 grep
[root@oldboyedu43 oldboy]# grep "20" /oldboy/ett.txt
20
[root@oldboyedu43 oldboy]# grep -A10 "20" /oldboy/ett.txt
[root@oldboyedu43 oldboy]# grep -B10 "30" /oldboy/ett.txt
[root@oldboyedu43 oldboy]# grep -C5 "35" /oldboy/ett.txt
小结:
1.head+tail
2.sed
3.awk
4.grep了解

第8章 如何替换文件中的内容
8.1 先创建一个环境
mkdir -p /oldboy/test
cd /oldboy
echo "oldboy">test/del.sh
echo "oldboy">test.sh
echo "oldboy">t.sh
touch oldboy.txt
touch alex.txt

8.2 使用find命令找出你要处理的文件
[root@oldboyedu43 oldboy]# find /oldboy/ -type f -name "*.sh"
/oldboy/test.sh
/oldboy/test/del.sh
/oldboy/t.sh

8.2.1 替换一个文件 (oldboy ----> oldgirl )
sed -i 's#要替换的内容#替换成什么内容#g'
[root@oldboyedu43 oldboy]# sed -i 's#oldboy#oldgirl#g' /oldboy/test.sh
[root@oldboyedu43 oldboy]# cat /oldboy/test.sh
oldgirl

8.2.2 替换多个文件
把find命令找到的文件 都交给sed命令进行替换
[root@oldboyedu43 oldboy]# find /oldboy/ -type f -name "*.sh"|xargs sed 's#oldboy#oldgirl#g'
oldgirl
oldgirl
oldgirl

修改文件内容
[root@oldboyedu43 oldboy]# find /oldboy/ -type f -name "*.sh"|xargs sed -i 's#oldboy#oldgirl#g'

#####第6个里程碑-检查
[root@oldboyedu43 oldboy]# find /oldboy/ -type f -name "*.sh"|xargs cat
oldgirl
oldgirl
oldgirl

转载于:https://blog.51cto.com/12928749/2050298

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值