文件处理命令
显示行号 [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