文件处理命令

显示行号
[root@#quan#Better ~]$cat -n lnmp-zabbix-quan 
     1    #关闭iptables
     2    service iptables stop
     3    chkconfig iptablse off
     4    #关闭selinux
     5    setenforce 0
     6    sed -i.bak '/^SELINUX=/ s#.*#SELINUX=disabled#'  /etc/selinux/config

显示行号并忽略空白行
[root@#quan#Better ~]$cat -b lnmp-zabbix-quan 
     1    #关闭iptables
     2    service iptables stop
     3    chkconfig iptablse off
     4    #关闭selinux
     5    setenforce 0
     6    sed -i.bak '/^SELINUX=/ s#.*#SELINUX=disabled#'  /etc/selinux/config
     7    yum install -y gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel pcre* make gd-devel libjpeg-devel libpng-devel libxml2-devel bzip2-devel libcurl-devel
     8    #建立nginx的用户 -s指定用户的shell类型 -M不创建用户家目录
     9    useradd nginx -s /sbin/nologin -M



    10    cd && wget http://nginx.org/download/nginx-1.10.3.tar.gz


当使用cat进行非交互性修改文件时
cat >>acd <<EOF
fjeijif
EOF

注意:其中如果有变量必须将$改成\$即加上转义字符

显示特殊字符

cat -E 

 

 温馨提示:

进行cat >>test.txt  输入的时候是不能直接删除键删除的,需要按住ctrl+退格键 进行删除

生产应用

用于自动化批量同步主从复制的

[root@#quan#Better ~]$cat |mysql -u root -p '123456' <<EOF
> CHANGE MASTER TO
> MASTER_HOST='192.168.31.25'
> MASTER_PORT=3306,
> MASTER_USER='QUAN',
> MASTER_PASSWORD='2004',
> MASTER_LOG_FILE='master_bin.0000025',
> MASTER_LOG_POS='4299';
> EOF

 

[root@#quan#Better zabbix]$tailf zabbix.haocheng.com.access.log 
192.168.31.250 - - [08/Sep/2019:23:12:38 +0800] "GET /jsLoader.php?ver=3.0.27&lang=zh_CN&showGuiMessaging=1&files[]=multiselect.js&files[]=servercheck.js HTTP/1.1" 304 0 "http://zabbix.quan.com:8027/actionconf.php" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36" "-"
192.168.31.250 - - [08/Sep/2019:23:12:38 +0800] "GET /jsLoader.php?ver=3.0.27&lang=zh_CN&showGuiMessaging=1 HTTP/1.1" 304 0 "http://zabbix.quan.com:8027/actionconf.php" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36" "-"

tailf 几乎是和tail -f等同的,
特点:
如果文件不增长,那么它不会去访问磁盘文件,也不会更改文件的访问时间

 

cut -d 可以设置只输出第几个字节
[root@#quan#Better ~]$cat pp
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@#quan#Better ~]$cut -b 3 pp
o
n
e
[root@#quan#Better ~]$cut -b -3 pp  #开始到第三个字节
roo
bin
dae
[root@#quan#Better ~]$cut -b 3-5 pp 第三个字节到第五个字节
ot:
n:x
emo
[root@#quan#Better ~]$
[root@#quan#Better ~]$cut -d : -f 1 pp #-d 指定分隔符 -f指定第几列
root
bin
daemon
[root@#quan#Better ~]$cut -d : -f 1-3 pp  #可以指定几列到几列
root:x:0
bin:x:1
daemon:x:2
[root@#quan#Better ~]$cat aa 
1
2
3
4
5
[root@#quan#Better ~]$cat bb 
a
b
c
d
e

[root@#quan#Better ~]$paste aa bb
1    a
2    b
3    c
4    d
5    e
    
[root@#quan#Better ~]$paste  -d : aa bb
1:a
2:b
3:c
4:d
5:e
:
[root@#quan#Better ~]$pas
passwd       paste        pasuspender  
[root@#quan#Better ~]$paste -s aa 
1    2    3    4    5
[root@#quan#Better ~]$paste -s aa bb
1    2    3    4    5
a    b    c    d    e    
[root@#quan#Better ~]$


生产案例
生成的用户和密码的格式如下,需要转换为其他格式
user=password

[root@#quan#Better ~]$cat cc
u1
1111
u2
2222
u3
3333
[root@#quan#Better ~]$paste -sd '=\n' cc
u1=1111
u2=2222
u3=3333

[root@#quan#Better ~]$paste -d '=' - - <cc
u1=1111
u2=2222
u3=3333
#其中是从cc中标准读入,每一个- 代表每一行,这里两个- 代表两行,再通过-d =实现

还可以通过下面几种方法
[root@#quan#Better ~]$xargs -n 2 <cc |sed 's/ /=/g'
u1=1111
u2=2222
u3=3333
[root@#quan#Better ~]$sed 'N;s#\n#=#g' cc
u1=1111
u2=2222
u3=3333
#Nx先不清空模式空间,直接加载下一行

 

[root@#quan#Better ~]$sort dd 默认从开始按照ASCII进行排序
25g
36
41a
41a
44
47
52a
53a
a13a
a13a
a33d
d22b
[root@#quan#Better ~]$sort -n dd  #按数字进行排序
a13a
a13a
a33d
d22b
14g
25g
36
41a
41a
44
47
52a
53a
[root@#quan#Better ~]$sort -nr dd  # -r 表示倒序
53a
52a
47
44
41a
41a
36
25g
14g
d22b
a33d
a13a
a13a
[root@#quan#Better ~]$sort -nur dd  #其中-u 去掉重复行
53a
52a
47
44
41a
36
25g
14g
a13a

#使用-t指定分隔符 -k 指定第几列进行排序
[root@#quan#Better ~]$sort -t " " -k2 dd
14g
25g
36
41a
44
47
53a
a13a  1
d22b  2
a33d  3
a13a  4
41a   5
52a   6

高级
[root@#quan#Better ~]$cat dd
a13-ab--13
d22-bc--22
a33-dd--31
a13-ac--44
41a-ab--53
52a-aa--62
53a-ff--41
52a-aa--12
a13-ac--14
[root@#quan#Better ~]$sort -t "-" -k 1.6,1.7 -k 4.1,4.2n dd
52a-aa--12
52a-aa--62
a13-ab--13
41a-ab--53
a13-ac--14
d22-bc--22
a13-ac--44
a33-dd--31
53a-ff--41
#其中-k 1.6,1.7 从第一字段第六个字符到第七个字符进行排序后
#再-k 4.1,4.2 从第四段得第一个字符到第二个字符进行排序,按数字n排序
. 是连接字符得
, 是连接字段的
[root@#quan#Better ~]$cat ee
a
b
c
d
a
e
d
a
v
c
[root@#quan#Better ~]$uniq ee  #默认只能去掉相邻行之间的重复
a
b
c
d
a
e
d
a
v
c
[root@#quan#Better ~]$sort ee |uniq #利用sort先进行排序,救可以去重了
a
b
c
d
e
v
[root@#quan#Better ~]$sort ee |uniq -c #去重并显示数量
      3 a
      1 b
      2 c
      2 d
      1 e
      1 v
[root@#quan#Better ~]$

 

[root@#quan#Better ~]$cat bb
a
b
c
d
e

[root@#quan#Better ~]$cat bb | tr -d "abc"



d
e
#注意:“abc” 代表的不是只删除abc这个字符串,含有a b c 字母的都有删除
#-d为删除
[root@#quan#Better ~]$cat bb | tr 'abcd' 'ABCD'
A
B
C
D
e
# 第一个字符集abcd 按顺序替换为ABCD
[root@#quan#Better ~]$cat bb | tr '[a-z]' '[A-Z]'
A
B
C
D
E
#更加全面的
[root@#quan#Better ~]$cat bb | tr -d '\n'
abcde
#删除特殊字符,
[root@#quan#Better ~]$echo "aaaabbcd" | tr -s 'a'
abbcd
#-s 进行字符串重复的缩减为一个,后面加字符集
[root@#quan#Better ~]$echo "aaaabb123cd" | tr '0-9' '*'
aaaabb***cd
#0-9表示数字
[root@#quan#Better ~]$echo "aaaabb123cd" | tr -c  '0-9' '*'
******123***
#-c是对将要替换的字符进行取反,不替换第一个字符集里面的字符
[root@#quan#Better ~]$
tee命令是把数据重定向到屏幕和文件里面 其中-a 是追加输入到文件当中
[root@#quan#Better tmp]$ls |tee ls.txt
gconfd-gdm
keyring-95urfx
keyring-AGHgFM
keyring-Foz4Hv
keyring-hRsO0e
keyring-Qhfnnd
keyring-SYAqed
keyring-vU6ECi
keyring-wlVYuR
keyring-z210kg
ls.txt
mysql.sock
orbit-gdm
pulse-dLTEGSQL3ge3
pulse-DQ6pTKVyMQbA
sess_tvr0so89lsjuv3hkpsskira1g3
zabbix_server.log
zabbix_server.pid
[root@#quan#Better tmp]$cat ls.txt 
gconfd-gdm
keyring-95urfx
keyring-AGHgFM
keyring-Foz4Hv
keyring-hRsO0e
keyring-Qhfnnd
keyring-SYAqed
keyring-vU6ECi
keyring-wlVYuR
keyring-z210kg
ls.txt
mysql.sock
orbit-gdm
pulse-dLTEGSQL3ge3
pulse-DQ6pTKVyMQbA
sess_tvr0so89lsjuv3hkpsskira1g3
zabbix_server.log
zabbix_server.pid

 

posted @ 2019-11-08 16:16  linux——quan  阅读(232)  评论(0编辑  收藏  举报