awk 常用于处理格式非常明显的文件

awk -F: '{print $1}' /etc/passwd  含义:取冒号分隔符的第一段内容

$0 指取所有!

NF 指有几段内容

$NF 取最后一段内容

NR 指代行号

用 NR做 行定位  awk -F: 'NR==1{print $1,NR}'  test

小于等于3行的内容 awk -F: 'NR<=3{print $1,NR}'  test

3-5行的内容awk -F: 'NR>=3 && NR<=5{print $1,"---------",NR}'  test

小于等于2行,大于等于7行的内容: awk -F: 'NR>=7 || NR<=2{print $1,"---------",NR}'  test

nologin结尾的用户名打印出来:awk -F: '/nologin$/{print $1}'  test(正则定指,指定文件和打印指定位置)

用户名r开头t结尾,中间任意字符,打印UID,awk -F: '$1~/^r.*t/{print NR ,$3}' test

('$1~/^r.*t/用户名来匹配正则表达式)

只打印指定文件的内容  awk -F: '$1==“root”{print NR ,$1,$3}' test

打印UID大于等于7的用户名  awk -F: '$3>=7{print NR ,$1}' test

自定义一个变量,然后用awk去打印  用到 -v

count =7

awk -v x=$count -F: '$3>=x{print NR,$1,$3}' test

其他变量补充

1、

awk 不指定内容,以空格或是多个空格作为分隔符

查看IP地址!

ifconfig |awk 'NR==2{print $2}'   取IP地址

可以定义 ip_addr= 'ifconfig |awk 'NR==2{print $2}'   echo $ip_addr  打印结果

2、打印处理重复内容  先把重复的行放在一起,然后去重即可。

sort 排序

uniq 去重  -c 查看去了多少行

cat a.txt | sort |uniq -c

3、轻量级的操作 cut

cat test |cut -d: -f1,3简单的处理文件

4、du -sh /boot/ 查看文件大小

5、find 命令 (找文件)

find / -type f 查找根下的普通文件

find / -name “*.txt”查找文件名为什么的文件

find / -size +30M 大于30M的文件

find / -size +10M size -30M 找出大于10M小于30M的文件

find / -size +2M -type f -name \*.txt 找出根下大于2M的名字中后缀为txt的普通文件。

6、查找某个目录下,包含某个内容文件的文件名全部找出,并打印出来

grep -rl 'root' /test  (grep -r 过滤的是目录)

改主机名脚本

vim a.sh

read -p 'please input your hostname:' name

hostnamectl set-hostname $name

保存退出

给执行权限,chmod -R +x a.sh

执行:./a.sh

shell

变量

1、命名规则:以字母开头,剩下的部分可以是:字母,数字,下划线。

规范1.以字母开头
        2.使用中划线或者下划线做单词的连接
     3.同类型的用数字区分
     4.对于文件最好加上拓展名

     5.用户能一眼看出要做什么

2、系统变量

set:查看所有变量

env:查看系统变量

3、变量赋值

x=1; 变量赋值

echo $1输出

unset x 删除变量

4、常用系统变量

PATH 环境变量
PWD 当前路径
LANG
HOME
HISTSIZE  历史命令,最多1000行
PS1 存放当前用户,用于改用户名 PS1=****
IFS

5、全局变量和局部变量

全局变量指所有的用户都通用。

局部变量指仅仅当前用户可用。

export 用于linux中定义全局变量,任何位置都有效

链接:

变量边界问题:用{}来定义变量的边界,括号内是一个整体。

例子:money =10   echo $money ----->10   echo $money0000 没法输出,加上{}即可。

echo ${money}0000   ----->100000

计算内存使用率

free
查看内存

mem_total='free | awk 'NR==2{print $2}''    总内存

mem_use= 'free | awk 'NR==3{print
$3}''     使用内存

echo $mem_use   查看结果

浮点运算  echo 'scale=2; $mem_use/$mem_total' | bc -l
|cut -d. -f2

mem_per=' echo "scale=2;
$mem_use/$mem_total" | bc -l |cut -d. -f2'

echo ${mem_per}%  百分号的使用率

运算符  注意:用$取值!!!

 

1、算术运算符 +  -  * 
/  %

2、关系操作   <  > 
<=  >=  ==  !=(不等于)  &&(与)  ||(或)

用两个小括号,做关系运算(())。  test命令,也可以做关系运算!

中括号[]的语法结构和test一样,用中括号的话,与test连用。整型!

命令下: -gt 大于 -lt 小于 -ge大于等于  -le小于等于  -eq 等于  -ne 不等于

     -a 同时成功  
-o
仅有一个成功

 

赋值运算符


+=  *=  /=(除等于)  %=(取余等于)

x=1 
x=$[$x+1]  echo $x=2  ---------> x=1  ((x+=1)) echo $x  2

自增1或是自减1 ((i++))
((i--))

shell中的所有计算器

$[] 
(())  $(())

$$ 进程PID

$# 总共有多少参数

$? 上一个命令是否正确运行

测试命令:test[] [[]] (())

1、测试文件状态

-d 目录
-s 文件长度 > 0、非空
-f 正规文件
-w 可写

-r 可读

-x 可执行

-L 符号连接

-u 文件有 suid 位设置

2、字符串测试

= 两个字符串相等

!= 两个字符串不相等

-z 空串

-n 非空串

3、测试数值

-eq 等于

-ne 不等于

-gt 大于

-lt 小于

-ge 大于等于

-le 小于等于

4、扩展测试符号

比较数字,使用(( ))
  其他测试使用 [[ ]]
  包含数字比较的混合测试,使用[[ expr1 &&
expr2 ]] (( expr1 || expr2 ))

两个文件的比较
 FILE1 -ef FILE2
 测试两个文件是否是相同的inode
 有时为了找到同一个INODE号的文件 更倾向于使用 find 命令的 -inum 或 --samefile

FILE1 -nt FILE2
FILE1 is newer (modification date) than FILE2

FILE1 -ot FILE2
FILE1 is older than FILE2

shell 流程控制

创建文件.sh结尾。vim *.sh 编写shell 以什么开始,以什么反着写结束。

给文件执行权限 chmod +x *.sh

./*.sh 执行。验证结果

用户输入 :read -p "please input:" var

睡多少秒(延迟)sleep 0.5 延迟0.5秒

输出用$var

var='/etc/passwd'

if [ -f $var ]

then

echo "$"

命名上不要带系统进程名!容易产生新的进程,倒是执行错误。

$1 空格分离的第一个参数

$2空格分离的第二个参数

$3空格分离的第三个参数

$4空格分离的第四个参数

$$ 进程的PID

$* 脚本文件后所有参数

$@ 脚本文件后所有参数

$#  总共有多少个参数

$? 上一条命令是否执行成功

应用举例

重启nginx 服务

#!/bin/bash

ps aux | grep nginx |grep -v 'grep'  #查看进程

if [ $? -ne 0 ]   #判断 是否开启

then

systemctl start nginx

fi

开发环境入门 linux基础 (部分)awk 赋值变量 if的更多相关文章

  1. 开发环境入门 linux基础(部分)虚拟内存,rpm和yum安装

    虚拟内存,rpm和yum安装 文本中查找 /内容 替换:扩展模式下(:)%s /替换目标/要替换的文件/ (只替换第一个)(后边加g全部替换) :set u添加行号 raid  lvm逻辑卷 df - ...

  2. 开发环境入门 linux基础 (部分)正则表达式 grep sed

    /etc/profile /etc/bashrc  .变量添加到shell环境中,永久生效. /root/.bashrc /root/.bash_profile 正则表达式 定义:正则就是用一些具有特 ...

  3. 开发环境入门 linux基础 (部分)while for 函数 计划任务

    while循环 while do 动作 done 需要无限循环时我们会选择while : echo -e 格式处理,将\n的意义不变. exit 指退出执行程序 break 指跳出本层循环 conti ...

  4. 开发环境入门 linux基础 (部分) 复制 用户和组操作 权限更改

    复制 用户和组操作 权限更改 CP 复制命令 cp 源文件 目标文件 a) –r(recursive,递归的):递归地复制目录.当复制一个目录时,复制该目录中所有的内容,其中包括子目录的全部内容. b ...

  5. 开发环境入门 linux基础 基本操作命令(部分) 文本结构和基本命令

    文本结构和基本命令 linux系统中系统提示符:$ 表示普通用户 su  root切换用户命令(用户名 root),输入密码,切换到其他用户状态 root 命令提示符:# exit 退出当前用户,返回 ...

  6. 开发环境入门 linux基础 (部分)网络 SSH 更名 DNS解析 元字符

    nginx---> web ifconfig 查看网络配置信息 id add show 查看当前网卡信息(最小安装下) mtu 是指网卡传输的最大单元 单位:字节 网卡配置 临时配置 ifcon ...

  7. 开发环境入门 linux基础 (部分)nginx和nfs

    nginx和nfs 复习总结 rpm -ivh 软件包 --nodeps (没有依赖性安装) rpm -ivh 软件包 --force (覆盖安装) yum -y upgrade 升级所有包,不改变软 ...

  8. 开发环境入门 linux基础 (部分) 归档 压缩 Vi编译器 系统分区

    归档 压缩 Vi编译器 系统分区 1.使用cat命令进行文件的纵向合并          1) 使用cat命令实现文件的纵向合并:          a) 例如:将用户信息数据库文件和组信息数据库文件 ...

  9. 使用Ant搭建Android开发环境入门

    使用Ant搭建Android开发环境入门   使用Ant搭建Android开发环境,建立android项目 配置Ant环境 下载Ant:http://ant.apache.org/bindownloa ...

随机推荐

  1. window7 共享wifi(不通过wifi软件)

    1.新建共享网络账号 管理员登录cmd输入:netsh wlan set hostednetwork mode=allow ssid=4Gtest key=12345678 ssid是无线网络名称.k ...

  2. 初探MyBatis之HelloWorld(一)

    官方地址:https://github.com/mybatis/mybatis-3 准备: 官方中文文档地址:http://www.mybatis.org/mybatis-3/zh/getting-s ...

  3. Codeforces 888D Almost Identity Permutations:错排公式

    题目链接:http://codeforces.com/problemset/problem/888/D 题意: 给定n,k,问你有多少种1到n的排列,满足至少有n-k个a[i] == i. (4 &l ...

  4. HTML5 新元素之VIDEO标签的js操作

    本文参考w3school的HTML DOM Video 对象. Video 对象属性 属性 描述 audioTracks 返回表示可用音频轨道的 AudioTrackList 对象. autoplay ...

  5. 委托+内置委托方法+多播委托+lambda表达式+事件

    委托概念:如果我们要把方法当做参数来传递的话,就要用到委托.简单来说委托是一个类型,这个类型可以赋值一个方法的引用. 声明委托: 在C#中使用一个类分两个阶段,首选定义这个类,告诉编译器这个类由什么字 ...

  6. IDT 查询 hana SQL 聚合问题。

    因为业务需要,用HANA的数据做成DASHBOARD.工厂运营概况.结果发现奇怪的问题.明明是一个类型的但是不会聚合.(数据量特别大,一个月的应该就一条,但是有几千条做不下去.) 比如车辆类型是 焊装 ...

  7. 关于调接口和腾讯云cos方面。

    腾讯云的cos js jdk那个文档使用说明不好用. 都没看懂,而且图片上传也没有具体的详细.对于新手来说强制使用这个,弄得自己一头雾水. 工作效率就会下降. 为此我在网上搜了对象存储cos的常见错误 ...

  8. boost开发指南

    C++确实很复杂,神一样的0x不知道能否使C++变得纯粹和干爽? boost很复杂,感觉某些地方有过度设计和太过于就事论事的嫌疑,对实际开发工作的考虑太过于理想化.学习boost本身就是一个复杂度,有 ...

  9. THUSC 2017 大魔法师

    一个序列,每个物品有三个权值 $A,B,C$ 要求维护: 1.区间 $A_i+=B_i$ 2.区间 $B_i+=C_i$ 3.区间 $C_i+=A_i$ 4.区间 $A_i+=v$ 5.区间 $B_i ...

  10. NOI模拟赛 #4

    好像只有一个串串题可以做... 不会 dp 和数据结构啊 QAQ 10 + 20 + 100 = 130 T1 一棵树,每个点有一个能量的最大容量 $l_i$ 和一个增长速度 $v_i$,每次可以选一 ...