Linux—文本处理

基础练习:

1.将命令历史写入到root用户家目录的普通文件exercise中。

[root@localhost ~]# history
    1  2
    2  5
    3  3
    4  6
    5  4
    6  history
[root@localhost ~]# history > exercise
[root@localhost ~]# cat exercise
    1  2
    2  5
    3  3
    4  6
    5  4
    6  history
    7  history > exercise
[root@localhost ~]# 

history : 命令历史

[root@localhost ~]# history | tee exercise
    1  2
    2  5
    3  3
    4  6
    5  4
    6  history
    7  history > exercise
    8  cat exercise
    9  rm -f exercise
   10  ll
   11  history | tee exercise
[root@localhost ~]# 

管道符 | : 管道符左边命令的输出作为管道符右边命令的输入。
tee命令 : 在输出到文件的同时输出到屏幕

2.截取当前日期的年月日将其写入文件tim.txt中?

[root@localhost ~]# date | cut -d ' ' -f 2,3,6 > time1.txt
[root@localhost ~]# cat time1.txt
Mar 20 2019
[root@localhost ~]# 

————————————

[root@localhost ~]# date +%Y-%m-%d > time2.txt
[root@localhost ~]# cat time2.txt
2019-03-20
[root@localhost ~]# 

————————————

[root@localhost ~]# date +%y/%m/%d > time3.txt
[root@localhost ~]# cat time3.txt
19/03/20
[root@localhost ~]# 

3.统计当前系统有多少用户

[root@localhost ~]# wc -l /etc/passwd
44 /etc/passwd
[root@localhost ~]# 

文本统计:wc
显示文件行数、单词数、字节数和文件名:wc 文件名
统计当前目录下的文件数:wc -l
只显示单词数:wc -w 文件名
只显示字节数:wc -c 文件名
只显示行数:wc -l 文件名
只显示字符数:wc -m 文件名
显示最长的一行的字符数(不包括断行符):wc -L 文件名

注:在UTF-8编码格式里面,显示时一个字符占一个字节,一个中文字占用3个字节

4.有一个文件叫lianxi.txt,文件内容为排序过的/etc/passwd内容的第三列和第三列的行数。

[root@localhost ~]# cut -d : -f 3 /etc/passwd | sort -n | tee lianxi.txt | wc -l  >> lianxi.txt
[root@localhost ~]# cat lianxi.txt
0
1
2
3
4
5
6
7
8
11
12
14
27
29
32
38
42
59
70
72
74
75
81
89
99
107
113
170
171
172
173
989
990
991
992
993
994
995
996
997
998
999
1000
65534
44
[root@localhost ~]# 

排序显示(默认根据字符在ASCII码中的升序排序):sort 文件名
按照数值大小排序:sort -n 文件名 
排序并去掉重复的:sort -u 文件名
逆序排序:sort -r 文件名

进阶练习:

1.在/home下创建普通文件file1,在/下给它创建一个硬链接文件为file1.bak,在root用户的家目录下给file1.bak文件创建一个硬链接为file1.bak.bak,给file1.bak.bak创建一个软链接为f1。

[root@localhost ~]# touch /home/file1
[root@localhost ~]# ln /home/file1 /file1.bak
[root@localhost ~]# ln /file1.bak file1.bak.bak
[root@localhost ~]# ln -s file1.bak.bak f1
[root@localhost ~]# ll /home
total 4
-rw-r--r--.  3 root   root      0 Mar 20 23:50 file1
drwx------. 14 redhat redhat 4096 Mar 14 23:22 redhat
[root@localhost ~]# ll /
total 32
lrwxrwxrwx.   1 root root    7 Mar  6 05:26 bin -> usr/bin
dr-xr-xr-x.   3 root root 4096 Mar 14 23:21 boot
drwxr-xr-x.  19 root root 3240 Mar 20 23:49 dev
drwxr-xr-x. 138 root root 8192 Mar 21  2019 etc
-rw-r--r--.   3 root root    0 Mar 20 23:50 file1.bak
drwxr-xr-x.   3 root root   31 Mar 20 23:50 home
lrwxrwxrwx.   1 root root    7 Mar  6 05:26 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 Mar  6 05:26 lib64 -> usr/lib64
drwxr-xr-x.   2 root root    6 May 25  2015 media
drwxr-xr-x.   2 root root    6 May 25  2015 mnt
drwxr-xr-x.   3 root root   15 Mar  6 05:33 opt
dr-xr-xr-x. 486 root root    0 Mar 21  2019 proc
dr-xr-x---.  13 root root 4096 Mar 20 23:51 root
drwxr-xr-x.  38 root root 1140 Mar 20 23:49 run
lrwxrwxrwx.   1 root root    8 Mar  6 05:26 sbin -> usr/sbin
drwxr-xr-x.   2 root root    6 May 25  2015 srv
dr-xr-xr-x.  13 root root    0 Mar 21  2019 sys
drwxrwxrwt.  25 root root 4096 Mar 20 23:50 tmp
drwxr-xr-x.  13 root root 4096 Mar  6 05:26 usr
drwxr-xr-x.  20 root root 4096 Mar 21  2019 var
[root@localhost ~]# ll
total 8
-rw-------. 1 root root 1632 Mar  6 05:37 anaconda-ks.cfg
drwxr-xr-x. 2 root root    6 Mar 14 23:23 Desktop
drwxr-xr-x. 2 root root    6 Mar 14 23:23 Documents
drwxr-xr-x. 2 root root    6 Mar 14 23:23 Downloads
lrwxrwxrwx. 1 root root   13 Mar 20 23:51 f1 -> file1.bak.bak
-rw-r--r--. 3 root root    0 Mar 20 23:50 file1.bak.bak
-rw-------. 1 root root 1725 Mar  5 21:46 initial-setup-ks.cfg
drwxr-xr-x. 2 root root    6 Mar 14 23:23 Music
drwxr-xr-x. 2 root root    6 Mar 14 23:23 Pictures
drwxr-xr-x. 2 root root    6 Mar 14 23:23 Public
drwxr-xr-x. 2 root root    6 Mar 14 23:23 Templates
drwxr-xr-x. 2 root root    6 Mar 14 23:23 Videos
[root@localhost ~]# 

创建软链接文件 :ln -s 原文件 链接文件
软链接记录的是它所连接的文件的路径

————————————
创建硬链接文件 : ln 原文件 新文件
硬链接记录的是目标的inode

2.找出root用户的家目录下以f开头的文件。

[root@localhost ~]# ls f*
f1  file1.bak.bak
[root@localhost ~]# 

3.写出一个永久生效的命令别名为cha,该命令别名可以显示出以上四个文件的详细属性和inode号

[root@localhost ~]# vim ~/.bashrc
alias cha='ll -i /home/file1 /file1.bak /root/file1.bak.bak /root/f1'

ls -i 显示文件索引节点号(inode)一个索引节点代表一个文件,在linux中保存在磁盘分区中的文件都给它分配一个编号,称为索引节点号inode

 Esc
 ZZ
 [root@localhost ~]# source ~/.bashrc
 [root@localhost ~]# cha
 19969981 -rw-r--r--. 3 root root  0 Mar 22 19:16 /file1.bak
 19969981 -rw-r--r--. 3 root root  0 Mar 22 19:16 /home/file1
 35700377 lrwxrwxrwx. 1 root root 13 Mar 20 23:51 /root/f1 -> file1.bak.bak
 19969981 -rw-r--r--. 3 root root  0 Mar 22 19:16 /root/file1.bak.bak
 [root@localhost ~]# 

4.将/etc/passwd的内容添加到file1.bak文件中,保留file1.bak文件中前9行的内容,删除其他行的内容。

[root@localhost ~]# head -9 /etc/passwd >> /file1.bak

head /etc/passwd :默认查看文件前10行
head -9 /etc/passwd :指定查看前9行

[root@localhost ~]# cat -n /file1.bak

cat :连接并显示文件内容到标准输出
cat -n 文件名 :显示文件内容并显示行号

    1	root:x :0:0:root:/root:/bin/bash
     2	bin:x :1:1:bin:/bin:/sbin/nologin
     3	daemon:x :2:2:daemon:/sbin:/sbin/nologin
     4	adm:x :3:4:adm:/var/adm:/sbin/nologin
     5	lp:x :4:7:lp:/var/spool/lpd:/sbin/nologin
     6	sync:x :5:0:sync:/sbin:/bin/sync
     7	shutdown:x :6:0:shutdown:/sbin:/sbin/shutdown
     8	halt:x :7:0:halt:/sbin:/sbin/halt
     9	mail:x :8:12:mail:/var/spool/mail:/sbin/nologin
[root@localhost ~]# 

5.查找出file1.bak的路径。

[root@localhost ~]# find / -name file1.bak 
/file1.bak
[root@localhost ~]# 

6.将file1.bak文件的第一列和最后一列输入到文件/root/zuoye。

[root@localhost ~]# cat /file1.bak | cut -d : -f 1,7 >> /root/zuoye
[root@localhost ~]# cat /root/zuoye
root:/bin/bash
bin:/sbin/nologin
daemon:/sbin/nologin
adm:/sbin/nologin
lp:/sbin/nologin
sync:/bin/sync
shutdown:/sbin/shutdown
halt:/sbin/halt
mail:/sbin/nologin

cut -d 指定分隔符 -f 指定第几列 被切割文件
-f 1,3第一列和第三列
-f 1-3第一列到第三列
-c 1-4 指定第一到第四个字符

7.将file1.bak.bak文件的第一行和最后一行输入到文件/test。

[root@localhost ~]# head -1 /root/file1.bak.bak >> /test && tail -1 /root/file1.bak.bak  >> /test
[root@localhost ~]# cat /test
root:x :0:0:root:/root:/bin/bash
mail:x :8:12:mail:/var/spool/mail:/sbin/nologin
[root@localhost ~]# 

默认查看后10行:tail /etc/passwd
查看后5行:tail  -5 /etc/passwd

8.有一个文件叫lianxi.txt,文件内容为排序过的file1.bak内容的第三列和第三列的行数。

[root@localhost ~]# cut -d : -f 3 /file1.bak | sort -n | tee lianxi.txt | wc -l >> lianxi.txt
[root@localhost ~]# cat lianxi.txt
0
1
2
3
4
5
6
7
8
9
[root@localhost ~]# 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值