linuxshell脚本awk
① linux shell 编程 awk -F/ 'OFS="/"{$NF="";print}'`这条脚本是什么意思,今天在公司的一个脚本中看见!
-F/ 字段分隔符设为/ 将输入文本流分割为多个字段进行处理
OFS="/" 设置输出时的字段分隔符为/
$NF="" 将最后一个字段内容设置为空,即去除每行的最后一个字段
最后通过print打印出来。
例如,一个文本内容为:
a/b/c/d/e
h/i/j/k/l/m
处理后的输出内容为:
a/b/c/d/
h/i/j/k/l/
② linux shell中awk的用法
这个。。。太多了。如果在这里就能说清楚,那么其本身功能的强大性就值得质疑。
只能推荐一些电子书(网上都可以找到)和学习链接给你:
Unix awk使用手册(第二版).doc
Awk - An Introction and Tutorial.doc
详解着名的awk_oneliner.pdf
通用线程: awk 实例:
https://www.ibm.com/developerworks/cn/linux/shell/awk/awk-1/
③ Linux shell awk怎么去除行内,重复列
awk-F"[-,]"'{for(i=1;i<=NF;i++)a[$i,NR]++}{for(jina){split(j,b,SUBSEP);if(b[2]==NR)printfb[1]""}printf" "}'关键词.txt>去除重复后.txt
以此例测试通过。
关于awk二维数组的使用:
awk的多维数组在本质上是一维数组,更确切一点,awk在存储上并不支持多维数组。awk提供了逻辑上模拟二维数组的访问方式。例如,array[2,4] = 1这样的访问是允许的。awk使用一个特殊的字符串SUBSEP ( 34)作为分割字段,在上面的例子中,关联数组array存储的键值实际上是2 344。
类似一维数组的成员测试,多维数组可以使用if ( (i,j) in array)这样的语法,但是下标必须放置在圆括号中。
类似一维数组的循环访问,多维数组使用for ( item in array )这样的语法遍历数组。与一维数组不同的是,多维数组必须使用split()函数来访问单独的下标分量。split ( item, subscr, SUBSEP)。