awk基本命令介绍

格式:awk ‘/匹配条件/{print}’文件名

awk -F: '/nginx/{print $1,$3}' passwd

       -F:    表示以冒号做分割

       /nginx/      匹配nginx

例子:打印出IP地址,并且IP地址把点换成横杠

       ifconfig | grep "inet addr:" | grep -v "127.0.0.1"|awk  '{print $2}' |awk  -F: '{print $2}' |awk -F. '{print $1"-"$2"-"$3"-"$4}'

       我自己的实例

 

 

 

find 路径 -name "*.txt" -type d -mtime -1

       查找路径下的名字是以 .txt结尾的、目录、时间是一天以内做最后修改的。如果是一天以前就是+1。

find 路径 -name "*.txt" -type d -mtime -1 | xargs rm -fr {} \ ;

       删除前面找到的文件  | xargs 表示承接前面的,是连在一起使用的。

       也可以把| xargs换成 -exec ,相比较-exec的适用范围更广,| xargs基本不会使用

find 路径 -name "*.txt" -type d -mtime -1 -perm 755

       -perm 755 筛选755 权限的

 

 

grep过滤 

       grep -n --color "^root" ./passwd

       显示行号,颜色,以root开头的

              -v:取反

              -n:显示行号

              -i:忽略大小写

              -a:以文本文件方式搜索

       匹配test.txt文件里的IP地址(一个最基本的grep面试题,必会的)

Test.txt

       111.111.111.1111

       222.222.222.286

192.167.137.20

              egrep --color "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$"test.txt

                     [0-9]是在0-9之间的数,固定的格式。

                     {1,3}前面的0-9需要匹配1-3次,转义\.  。大括号表示匹配的次数

              egrep --color "([0-9]{1,3}\.){3}[0-9]{1,3}$"test.txt

                     上面是做了精简的版本。因为前三个是一样的,所以直接匹配三次。

 

 

Shell使用if语句判断目录是否存在

       -f:文件是否存在

       -d:目录是否存在

       -eq:等于

       -ne:不等于

       -gt:大于

       -lt:小于

       -le:小于等于

       -ge:大于等于

       -z : 空字符串

       $0:脚本名称

       $?:上一条命令执行的是否正确

       $#:处理参数的个数

       $1:脚本处理的第一个参数

       $2:脚本处理的第二个参数

#!/bin/bash

if [ ! -d /etc/nginx ];then

       Mkdir -p /etc/nginx

echo “目录已经存在,请退出”

fi

      

 

成绩的判断

#!/bin/bash

scores=$1

if [ -z $scores ];then

       echo “$0需要输入一个数字”

       exit

fi

If [[ $scores -gt 85 ]];then

       echo “very good”;

elif [[ $scores -gt 75 ]]; then

       echo “good”;

elif [[ $scores -gt 60 ]];then

       echo “pass ”;

else

       echo “ no pass”

fi

### awk 命令详解及使用示例 #### 基本介绍 `awk` 是一种专为处理结构化文本数据而设计的编程语言和文本处理工具,其名称来源于三位创始人 Alfred Aho、Peter Weinberger 和 Brian Kernighan 的姓氏首字母。它广泛用于日志分析、数据提取、报表生成等场景,尤其擅长按字段处理文本数据并执行复杂的模式匹配和计算操作。 `awk` 的核心功能包括: - **文本分析**:支持按列或字段处理结构化文本数据。 - **模式匹配**:根据指定条件筛选文本数据。 - **数据处理**:支持算术运算和字符串操作。 - **报表生成**:可以格式化输出结果,生成简洁明了的报告。 #### 工作原理 `awk` 以逐行方式读取输入,将每一行按指定分隔符(默认为空格)拆分为字段,然后对每一行应用用户定义的模式匹配和操作规则,最后输出处理结果。这种机制使得 `awk` 在处理表格型数据时非常高效。 #### 内置变量 `awk` 提供了多个内置变量,用于简化文本处理任务,包括但不限于: - `$0`:表示当前整行内容。 - `$1`, `$2`, ...:分别表示第 1 个、第 2 个字段。 - `NF`:表示当前行的字段数量。 - `$NF`:表示最后一个字段。 - `NR`:表示当前处理的行号。 - `FNR`:表示当前文件中的行号(适用于多文件处理)。 - `FS`:输入字段分隔符,默认为空白字符。 - `OFS`:输出字段分隔符。 - `RS`:输入记录分隔符,默认为换行符。 - `ORS`:输出记录分隔符。 - `FILENAME`:表示当前输入文件名。 #### 常用选项 `awk` 支持多种命令行选项,常见的包括: - `-F 分隔符`:指定输入字段分隔符。 - `-v var=值`:设置变量值。 - `-f 脚本文件`:从文件中读取 `awk` 脚本。 #### 程序结构 `awk` 程序通常由模式和动作组成,其基本结构为: ```awk /pattern/ { action } ``` 其中,`pattern` 是可选的,用于筛选匹配的行;`action` 是对匹配行执行的操作,如打印字段、计算数值等。 #### 使用示例 ##### 示例 1:打印特定字段 假设 `data.txt` 文件内容如下: ``` Alice 25 Female Bob 30 Male Charlie 22 Female ``` 使用以下命令可以提取姓名和性别字段: ```bash awk '{print $1, $3}' data.txt ``` 输出结果为: ``` Alice Female Bob Male Charlie Female ``` ##### 示例 2:使用自定义字段分隔符 若文件使用逗号作为字段分隔符,例如 `csv_data.txt` 内容如下: ``` name,age,gender Alice,25,Female Bob,30,Male ``` 可以使用 `-F` 指定分隔符并打印姓名字段: ```bash awk -F ',' '{print $1}' csv_data.txt ``` 输出结果为: ``` name Alice Bob ``` ##### 示例 3:在脚本中使用数组 以下示例演示如何在 `awk` 中使用数组处理字符串: ```bash echo " " | awk '{ arrStr = "hello\nworld" split(arrStr, arr, "\n") for (k in arr) { print k, arr[k] } }' ``` 该脚本将字符串按换行符分割并存储到数组中,然后遍历数组输出索引和值。 ##### 示例 4:统计字段数量 使用 `NF` 可以统计每行的字段数量: ```bash awk '{print NF}' data.txt ``` 输出结果为: ``` 3 3 3 ``` ##### 示例 5:按行号筛选 使用 `NR` 可以筛选特定行号的内容: ```bash awk 'NR == 2' data.txt ``` 输出结果为: ``` Bob 30 Male ``` #### 进阶用法 ##### 条件判断 `awk` 支持条件判断语句,例如筛选年龄大于 25 的记录: ```bash awk '$2 > 25 {print $1}' data.txt ``` 输出结果为: ``` Bob ``` ##### 数值计算 可以对字段进行算术运算,例如计算总年龄: ```bash awk '{sum += $2} END {print sum}' data.txt ``` 输出结果为: ``` 77 ``` ##### 格式化输出 使用 `printf` 可以格式化输出内容: ```bash awk '{printf "Name: %s, Age: %d\n", $1, $2}' data.txt ``` 输出结果为: ``` Name: Alice, Age: 25 Name: Bob, Age: 30 Name: Charlie, Age: 22 ``` #### 总结 `awk` 是一个功能强大且灵活的文本处理工具,适用于结构化文本数据的分析和处理。通过内置变量、条件判断、循环结构和函数,可以实现复杂的文本操作任务。结合命令行选项和脚本编写,`awk` 在日志分析、数据清洗和报表生成等领域具有广泛的应用价值。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值