Linux入门2

请设置系统时间和硬件时间保持一致:# hwclock --hctosys

sed用法:

1、删除/etc/grub.conf文件中行首的空白符;
sed -r 's@^[[:space:]]+@@g' /etc/grub.conf
2、替换/etc/inittab文件中"id:3:initdefault:"一行中的数字为5;
sed 's@(id:)[0-9](:initdefault:)@152@g' /etc/inittab
3、删除/etc/inittab文件中的空白行;
sed '/^$/d' /etc/inittab

awk:
    awk是一个强大的文本分析工具,
    相对于grep的查找,sed的编辑,
    awk在其对数据分析并生成报告时,显得尤为强大。
    简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

awk工作流程是这样的:先执行BEGING,然后读取文件,读入有/n换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,$0则表示所有域,$1表示第一个域,$n表示第n个域,随后开始执行模式所对应的动作action。接着开始读入第二条记录······直到所有的记录都读完,最后执行END操作。

# awk -F: '{print $1 " " $7}' /etc/passwd (查看用户的用户名和shell名称)

# awk -F: 'BEGIN{I=0;print "username your shell"}{I++;print I "" $1 " " $7}END{print "end."}' /etc/passwd (使用循环输出用户的用户名和shell命令)

awk 'BEGIN {count=0;print "[start]user count is ", count} {count=count+1;print $0;} END{print "[end]user count is ", count}' /etc/passwd

结果:[start]user count is  0
        root:x:0:0:root:/root:/bin/bash
   ...
   [end]user count is  20

显示/etc/passwd的账户:

awk -F ':' 'BEGIN {count=0;} {name[count] = $1;count++;}; END{for (i = 0; i < NR; i++) print i, name[i]}' /etc/passwd
统计某个文件夹下的文件占用的字节数
ls -l |awk 'BEGIN {size=0;} {size=size+$5;} END{print "[end]size is ", size}'
[end]size is  8657198
如果以M为单位显示:
ls -l |awk 'BEGIN {size=0;} {size=size+$5;} END{print "[end]size is ", size/1024/1024,"M"}'
[end]size is  8.25889 M
注意,统计不包括文件夹的子目录。
显示/etc/passwd的账户
awk -F ':' 'BEGIN {count=0;} {name[count] = $1;count++;}; END{for (i = 0; i < NR; i++) print i, name[i]}' /etc/passwd

结果为:

0 root
1 daemon
2 bin
3 sys
4 sync

只查询登录了的用户,即shell名称的结尾是/bin/bash

 awk -F: 'BEGIN {I=0;print "username your shell"} /bash$/{I++;print I " " $1 " " $7 } END {print "end."} ' /etc/passwd
 awk -F: 'BEGIN {I=0;print "username your shell"} {if($7=="/bin/bash") {I++;print I " " $1 " " $7} } END {print "end."} ' /etc/passwd

显示最近登录的5个账号:

last -5

last -3 | awk '{print $1}':自动按制表符隔开;查出最近3个用户的用户名

more /etc/passwd 可查看用户的shell等用户信息

# cut -d: -f7 /etc/passwd | sort -u 注:sort -u指相同的数据出现一次(取出当前用户所有的shell,且shell只显示一次,且按顺序显示)
# head -6 /etc/inittab | tail -1(取出/etc/inittab文件的第六行)
# tail -9 /etc/passwd | head -1 | cut -d: -f1,7 | tee /tmp/users(取出文件中倒数第9个用户的用户名和shell,显示到屏幕上并保存在/tmp/user中)
#ls /usr/bin | wc -l (统计/usr/bin目录下的文件个数)

原文地址:https://www.cnblogs.com/Mandylover/p/5068110.html