打印第n参数到最后一个参数

  • 文本的NF不等,即字段长度不固定,想截取从$3到$NF
  1. 第一反应是使用循环
  1. [root@localhost ~]# echo "1 2 3 4 5" | awk '{for(i=1;i<3;i++)$i="";print}'
  2. 3 4 5
  1. 但其实可以使用CU帽神给的技巧
  1. [root@localhost ~]#echo "1 2 3 4 5" | awk '{$1=$2="";print}'
  2. 3 4 5
  1. 如果分隔符比较标准的话(即使用的是统一的标准分隔符),建议还是用cut命令比较嗨皮
  1. [root@jizhong Fri Aug 18 14:05:26 ~]# echo "1 2 3 4 5" | cut -d" " -f3-
  2. 3 4 5
  1. 帽子神写的从第三个到最后一个
  1. [root@jizhong Fri Aug 18 14:06:47 ~]# echo "1 2 3 4 5" | awk '{$1=$2=""}1'
  2. 3 4 5
其实第2种跟第4种是一样的,只是换用了一些技巧,省略print而已;总的来说,遇到这类情况使用cut会更好一点;使用cut会少去第一个空格,因为awk的默认分隔符为空格

将多行文本内容合并为一行

  • 遇到一个4500行的文本,每行文本只有一段字符串且没有分隔符,现再想要将这个文本进行重组,每50行以逗号为分隔符合成一行
  1. 文本内容格式如下
  2. MD_Q9_G1_F
  3. MD_Q9_G1_Ua
  4. MD_Q9_G1_Ub
  5. MD_Q9_G1_Uc
  6. MD_Q9_G1_Uab
  7. MD_Q9_G1_Ubc
  8. MD_Q9_G1_Uca
  9. MD_Q9_G1_Ia
  10. MD_Q9_G1_Ib
  11. MD_Q9_G1_Ic
  12. MD_Q9_G1_Pa
  13. MD_Q9_G1_Pb
  14. MD_Q9_G1_Pc
  15. MD_Q9_G1_Psum
  16. MD_Q9_G1_Qa
  17. MD_Q9_G1_Qb
  18. MD_Q9_G1_Qc
  19. MD_Q9_G1_Qsum
  20. MD_Q9_G1_Sa
  21. MD_Q9_G1_Sb
  22. MD_Q9_G1_Sc
  23. MD_Q9_G1_Ssum
  24. MD_Q9_G1_PFa
  25. MD_Q9_G1_PFb
  26. MD_Q9_G1_PFc
  27. MD_Q9_G1_PF
  1. 思路:分隔符对50取余,余数为0时,OFS=\n,否则OFS=,
  1. awk '{ORS=NR%50?",":RS}1'
  1. 还有就是使用paste
  1. 但是,paste只有将多行合并为一行,但并没有分割的功能
  2. 要是有,希望大神指点
  1. 同样是对NR取余,但利用printf与print的换行区别来实现需求
  1. awk 'NR%50{printf $0",";next}1'
  2. NR取余非零时,执行{printf $0",";next},并跳过11表示print
  3. NR取余为零时,执行1({print $0})print默认换行
  1. 同样是对NR判断,但使用的额是三目运算符
  1. awk '{OFS=",";ORS=NR%50?OFS:RS}1'
  2. 满足条件时,输出为OFS(即,)
  3. 否则使用RS为输出符

pattern省略或为1,等价于 /.*/

action省略,等价于 { print $0 }

awk将变量传给shell可以用eval, 如 eval $(awk 'BEGIN{print "a=ggg b=3"}')则shell变量$a就是ggg,shell变量$b就是3

awk打印第n个参数到最后一个技巧/将n行组成一列的更多相关文章

  1. SpringMVC 中,当前台传入多个参数时,可将参数封装成一个bean类

    在实际业务场景中,当前台通过 url 向后台传送多个参数时,可以将参数封装成一个bean类,在bean类中对各个参数进行非空,默认值等的设置. 前台 url ,想后台传送两个参数,userName 和 ...

  2. web api中post参数时只能一个

    在WebAPI中,请求主体(HttpContent)只能被读取一次,不被缓存,只能向前读取的流. 举例子说明: /?id=123&name=bob void Action(int id, st ...

  3. awk替换第几行第几列的值

    代码如下: awk '{if(2==NR){gsub(/.*/, 300, $5)}print}' list.txt 将文件list.txt的第2行第5列的值替换为300

  4. jQuery.isEmptyObject()函数用于判断指定参数是否是一个空对象。

    jquery中有一个函数isEmptyObject()用来判断制定参数是否是一个空对象. 示例如下: function isEmptyObject(e) { var t; for (t in e) r ...

  5. 在jsp提交表单的参数封装到一个方法里

    建议去看一下孤傲苍狼写的Servlet+JSP+JavaBean开发模式(http://www.cnblogs.com/xdp-gacl/p/3902537.html), 最好把他JavaWeb学习总 ...

  6. promise对象的回调函数resolve的参数为另一个promise对象

    /*如果调用resolve函数和reject函数时带有参数,那么它们的参数会被传递给回调函数. reject函数的参数通常是Error对象的实例,表示抛出的错误: resolve函数的参数除了正常的值 ...

  7. JAVA-JSP内置对象之request获得参数的参数值(一个值)

    相关资料:<21天学通Java Web开发> 获得参数的参数值(一个值) RequestForm3.jsp <%@ page language="java" co ...

  8. 迅雷笔试题 (JAVA多线程)启动三个线程,分别打印A B C,现在写一个程序 循环打印ABCABCABC

    题目:http://wenku.baidu.com/view/d66187aad1f34693daef3e8a.html 启动三个线程,分别打印A B C,现在写一个程序 循环打印ABCABCABC. ...

  9. coalesce函数-返回参数中第一个非null值

    coalesce函数-返回参数中第一个非null值 学习了:http://www.cnblogs.com/zc_0101/archive/2009/08/11/1543650.html 这个要复杂一些 ...

随机推荐

  1. Memcache缓存

    memcache 是服务器缓存系统,以键值对方式保存数据到内存中,把对象序列化后,理论上可支持所有的数据类型.使用情景:怎么用都可以,注意的是它只把数据保存到内存中,重启memcache 服务后丢失, ...

  2. PHP使用文件流下载文件方法(附:解决下载文件内容乱码问题)

    1.flush - 刷新输出缓冲 2.ob_clean - 清空(擦掉)输出缓冲区 此函数用来丢弃输出缓冲区中的内容. 此函数不会销毁输出缓冲区,而像 ob_end_clean() 函数会销毁输出缓冲 ...

  3. html遮罩层设置

    .shade{ position: fixed; top: 0; bottom: 0; left: 0;right: 0; background-color: black; opacity: 0.6; ...

  4. linux(六)之文本操作

    接下来我们一起来看一下再linux中怎么去对文本进行操作的 一.文本文件 既然要操作文本,所以我们要对文本有一个了解,那什么是文本文件呢. 文本文件是一种由若干行字符构成的计算机文件.文本文件存在于计 ...

  5. bzoj:1659: [Usaco2006 Mar]Lights Out 关灯

    Description 奶牛们喜欢在黑暗中睡觉.每天晚上,他们的牲口棚有L(3<=L<=50)盏灯,他们想让亮着的灯尽可能的少.他们知道按钮开关的位置,但喜闻乐见的是他们并没有手指.你得到 ...

  6. BZOJ 1088: [SCOI2005]扫雷Mine【思维题,神奇的模拟+枚举】

    1088: [SCOI2005]扫雷Mine Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3791  Solved: 2234[Submit][St ...

  7. ACM_素数筛选

    /* *素数筛法,判断小于MAXN的数是不是素数. *notprime是一张表,为false表示是素数,true表示不是素数 */ const int MAXN = 1000010; bool not ...

  8. JAVA虚拟机之对象探秘

    上一章主要写到了JVM中运行时数据区域各个部分的功能及其作用.上一章说到了对象是分配在堆上面的,所以接下来我们写到对象在堆内存中是如何创建.如何布局.如何访问.1. 对象的创建 在java程序中对象的 ...

  9. C++ 初始化列表(转)

    转载自:http://www.cnblogs.com/graphics/archive/2010/07/04/1770900.html 何谓初始化列表 与其他函数不同,构造函数除了有名字,参数列表和函 ...

  10. java的运算符和表达式

    )1.算数运算符:java中常用的算术运算符除了 +.-.*./之外,还有%(取余).++(自增).--(自减). )1.1%(取余):可适用于整数,char,浮点数的取余中.在取余中,如果进行运算的 ...