龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 操作系统 > LINUX系统 >

Linux Shell 文本处理工具集锦(4)

时间:2014-05-21 15:13来源:网络整理 作者:网络 点击:
分享到:
awk NR 5 #行号小于5 awk NR==1,NR==4 {print} file #行号等于1和4的打印出来 awk /linux/ #包含linux文本的行(可以用正则表达式来指定,超级强大) awk !/linux/ #不包含

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

读取命令输出
使用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&gt;-1;lno--){print lifo[lno];}
} '

awk实现head、tail命令
•head:

代码如下:
awk 'NR&lt;=10{print}' filename

•tail:


代码如下:

awk '{buffer[NR%10] = $0;} END{for(i=0;i&lt;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/' filename

eg:

代码如下:

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 "-&gt;%4s\n", $1}'

迭代文件中的行、单词和字符

1. 迭代文件中的每一行

•while 循环法

代码如下:

while read line;
do
echo $line;
done &lt; 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;
done

3. 迭代每一个字符
${string:start_pos:num_of_chars}:从字符串中提取一个字符;(bash文本切片)
${#word}:返回变量word的长度


代码如下:

for((i=0;i&lt;${#word};i++))
do
echo ${word:i:1);
done

精彩图集

赞助商链接