Linux里面awk里面OFS作用是什么? linux中awk
- linux命令sed与awk是干什么用的,怎么用?
- 求详解此命令 awk 'BEGIN{OFS=FS=":"} NR==FNR{a[$1]=$2}NR>FNR{$2=a[$1];print}' 1.txt 2.txt
- linux shell中awk的用法
- linux中awk以及grep命令
linux命令sed与awk是干什么用的,怎么用?
非常强大的文本操纵工具,sed,awk,grep 这个三个命令 都是操作文本文件的
unix系统有几个非常命令的特点:
1. 对于内核而言,unix文件都是字节序列。io设备也是文件。
2. 至于文件的含义交由应用程序来解释。其中文本文件非常重要,因为unix提供 很多了实用程序(utility),这些程序功能相对独立,但可以通过管道来实现进程间通信(IPC),这样松散的耦合可以完成复杂的操作。那么进程间的通信的数据格式是怎样的呢? 其实对于实用程序而言,这个数据格式就是简单的文本文件。此外,还有IO重定向,也是一个不错的创意。至于文本文件中的内容采用什么格式呢?这个很具体的命令有关,那么操作文本就变得非常重要。grep,sed和awk就是三个操纵文本文件的命令
grep搜索
sed 修改和编辑文本文件中某些行
awk 是访问文本文件,操纵文本文件中某些数据
明白了吗?
求详解此命令 awk 'BEGIN{OFS=FS=":"} NR==FNR{a[$1]=$2}NR>FNR{$2=a[$1];print}' 1.txt 2.txt
BEGIN{OFS=FS=":"}
==>如你所说,将输出和输入分隔符设置为冒号,看来你知道这个,就不说了;
NR==FNR{a[$1]=$2}
==>NR为当前所有已读入的行数,FNR为当前文件已读入的行数,那么意思很明显,"NR=FNR"就表示读取第一个文件(1.txt)的每行时,"a[$1]=$2"表示设置一个数组元素,该元素下标为第一列,该元素值为第二列。
NR>FNR{$2=a[$1];print}
==>根据前面的讲解,这里"NR>FNR"当然就表示读取第二个文件(2.txt)每行时,"$2=a[$1];print"表示将该行的第二列替换为之前建立的那个数组中对应的元素,该元素的下标为第一列的值,然后打印替换后的该行。
如1.txt中有如下内容:
a:1
b:2
c:3
2.txt中有以下内容:
b:xiaobi:hehe
c:cat:jie
a:dog:dudu
那么打印内容为:
b:2:hehe
c:3:jie
a:1:dudu
linux shell中awk的用法
这个。。。太多了。如果在这里就能说清楚,那么其本身功能的强大性就值得质疑。
只能推荐一些电子书(网上都可以找到)和学习链接给你:
Unix awk使用手册(第二版).doc
Awk - An Introduction and Tutorial.doc
详解著名的awk_oneliner.pdf
通用线程: awk 实例:
www.ibm/developerworks/cn/linux/shell/awk/awk-1/
linux中awk以及grep命令
ls|xargs grep -E "^rec|^orec" | awk -F "|" '{if($68==0)print $1}'|awk -F: '{print $1}'|sort|uniq