传递外部变量
var=1000echo | awk '{print vara}' vara=$var # 输入来自stdinawk '{print vara}' vara=$var file # 输入来自文件用样式对awk处理的行进行过滤
awk 'NR < 5' #行号小于5
awk 'NR==1,NR==4 {print}' file #行号等于1和4的打印出来
awk '/linux/' #包含linux文本的行(可以用正则表达式来指定,超级强大)
awk '!/linux/' #不包含linux文本的行
设置定界符
使用-F来设置定界符(默认为空格)
awk -F: '{print $NF}' /etc/passwd
读取命令输出
【Linux Shell 文本处理工具,看完这篇集锦就够了】使用getline,将外部shell命令的输出读入到变量cmdout中;
echo | awk '{"grep root /etc/passwd" | getline cmdout; print cmdout }' 在awk中使用循环
for(i=0;i<10;i++){print $i;}
for(i in array){print array[i];}
eg:
以逆序的形式打印行:(tac命令的实现)
seq 9| awk '{lifo[NR] = $0; lno=NR} END{ for(;lno>-1;lno--){print lifo[lno];}} 'awk实现head、tail命令
head:
awk 'NR<=10{print}' filenametail:
awk '{buffer[NR%10] = $0;} END{for(i=0;i<11;i++){ print buffer[i %10]} } ' filename打印指定列
awk方式实现:
ls -lrt | awk '{print $6}'cut方式实现
ls -lrt | cut -f6打印指定文本区域
确定行号
seq 100| awk 'NR==4,NR==6{print}'确定文本
打印处于start_pattern 和end_pattern之间的文本;
awk '/start_pattern/, /end_pattern/' filenameeg:
seq 100 | awk '/13/,/15/'cat /etc/passwd| awk '/mai.*mail/,/news.*news/'awk常用内建函数
index(string,search_string):返回search_string在string中出现的位置
sub(regex,replacement_str,string):将正则匹配到的第一处内容替换为replacement_str;
match(regex,string):检查正则表达式是否能够匹配字符串;
length(string):返回字符串长度
echo | awk '{"grep root /etc/passwd" | getline cmdout; print length(cmdout) }' printf 类似C语言中的printf,对输出进行格式化
eg:
seq 10 | awk '{printf "->%4s", $1}'12、迭代文件中的行、单词和字符
1. 迭代文件中的每一行
while 循环法
while read line;doecho $line;done < file.txt改成子shell:cat file.txt | (while read line;do echo $line;done)awk法:
cat file.txt| awk '{print}'
2.迭代一行中的每一个单词
for word in $line;do echo $word;done3. 迭代每一个字符
${string:start_pos:num_of_chars}:从字符串中提取一个字符;(bash文本切片)
${#word}:返回变量word的长度
for((i=0;i<${#word};i++))doecho ${word:i:1);done
推荐阅读
- linux下实现免密传输文件或登录到其他服务器
- 如何理解 Linux shell中“2>&1”?
- windows+Linux 12款常用的Web服务器软件整理
- 在 Linux 中使用 Bash 脚本删除早于“X”天的文件/文件夹
- 如何通过 SSH 在远程 Linux 系统上运行命令
- 了解Linux目录,那你就了解了一半的Linux系统
- c/c++linux 深入浅出 TCP/IP 协议栈
- Linux 根目录爆掉,命令行无法自动补全,怎么办
- Linux grep 命令大全
- 针对一款采用GO语言编写的新型Linux勒索软件的分析
