awk打印第n个参数到最后一个技巧/将n行组成一列
打印第n参数到最后一个参数
- 文本的NF不等,即字段长度不固定,想截取从$3到$NF
- 第一反应是使用循环
[root@localhost ~]# echo "1 2 3 4 5" | awk '{for(i=1;i<3;i++)$i="";print}'
3 4 5
- 但其实可以使用CU帽神给的技巧
[root@localhost ~]#echo "1 2 3 4 5" | awk '{$1=$2="";print}'
3 4 5
- 如果分隔符比较标准的话(即使用的是统一的标准分隔符),建议还是用cut命令比较嗨皮
[root@jizhong Fri Aug 18 14:05:26 ~]# echo "1 2 3 4 5" | cut -d" " -f3-
3 4 5
- 帽子神写的从第三个到最后一个
[root@jizhong Fri Aug 18 14:06:47 ~]# echo "1 2 3 4 5" | awk '{$1=$2=""}1'
3 4 5
其实第2种跟第4种是一样的,只是换用了一些技巧,省略print而已;总的来说,遇到这类情况使用cut会更好一点;使用cut会少去第一个空格,因为awk的默认分隔符为空格
将多行文本内容合并为一行
- 遇到一个4500行的文本,每行文本只有一段字符串且没有分隔符,现再想要将这个文本进行重组,每50行以逗号为分隔符合成一行
文本内容格式如下
MD_Q9_G1_F
MD_Q9_G1_Ua
MD_Q9_G1_Ub
MD_Q9_G1_Uc
MD_Q9_G1_Uab
MD_Q9_G1_Ubc
MD_Q9_G1_Uca
MD_Q9_G1_Ia
MD_Q9_G1_Ib
MD_Q9_G1_Ic
MD_Q9_G1_Pa
MD_Q9_G1_Pb
MD_Q9_G1_Pc
MD_Q9_G1_Psum
MD_Q9_G1_Qa
MD_Q9_G1_Qb
MD_Q9_G1_Qc
MD_Q9_G1_Qsum
MD_Q9_G1_Sa
MD_Q9_G1_Sb
MD_Q9_G1_Sc
MD_Q9_G1_Ssum
MD_Q9_G1_PFa
MD_Q9_G1_PFb
MD_Q9_G1_PFc
MD_Q9_G1_PF
- 思路:分隔符对50取余,余数为0时,OFS=\n,否则OFS=,
awk '{ORS=NR%50?",":RS}1'
- 还有就是使用paste
但是,paste只有将多行合并为一行,但并没有分割的功能
要是有,希望大神指点
- 同样是对NR取余,但利用printf与print的换行区别来实现需求
awk 'NR%50{printf $0",";next}1'
当NR取余非零时,执行{printf $0",";next},并跳过1(1表示print)
当NR取余为零时,执行1({print $0})print默认换行
- 同样是对NR判断,但使用的额是三目运算符
awk '{OFS=",";ORS=NR%50?OFS:RS}1'
满足条件时,输出为OFS(即,)
否则使用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行组成一列的更多相关文章
- SpringMVC 中,当前台传入多个参数时,可将参数封装成一个bean类
在实际业务场景中,当前台通过 url 向后台传送多个参数时,可以将参数封装成一个bean类,在bean类中对各个参数进行非空,默认值等的设置. 前台 url ,想后台传送两个参数,userName 和 ...
- web api中post参数时只能一个
在WebAPI中,请求主体(HttpContent)只能被读取一次,不被缓存,只能向前读取的流. 举例子说明: /?id=123&name=bob void Action(int id, st ...
- awk替换第几行第几列的值
代码如下: awk '{if(2==NR){gsub(/.*/, 300, $5)}print}' list.txt 将文件list.txt的第2行第5列的值替换为300
- jQuery.isEmptyObject()函数用于判断指定参数是否是一个空对象。
jquery中有一个函数isEmptyObject()用来判断制定参数是否是一个空对象. 示例如下: function isEmptyObject(e) { var t; for (t in e) r ...
- 在jsp提交表单的参数封装到一个方法里
建议去看一下孤傲苍狼写的Servlet+JSP+JavaBean开发模式(http://www.cnblogs.com/xdp-gacl/p/3902537.html), 最好把他JavaWeb学习总 ...
- promise对象的回调函数resolve的参数为另一个promise对象
/*如果调用resolve函数和reject函数时带有参数,那么它们的参数会被传递给回调函数. reject函数的参数通常是Error对象的实例,表示抛出的错误: resolve函数的参数除了正常的值 ...
- JAVA-JSP内置对象之request获得参数的参数值(一个值)
相关资料:<21天学通Java Web开发> 获得参数的参数值(一个值) RequestForm3.jsp <%@ page language="java" co ...
- 迅雷笔试题 (JAVA多线程)启动三个线程,分别打印A B C,现在写一个程序 循环打印ABCABCABC
题目:http://wenku.baidu.com/view/d66187aad1f34693daef3e8a.html 启动三个线程,分别打印A B C,现在写一个程序 循环打印ABCABCABC. ...
- coalesce函数-返回参数中第一个非null值
coalesce函数-返回参数中第一个非null值 学习了:http://www.cnblogs.com/zc_0101/archive/2009/08/11/1543650.html 这个要复杂一些 ...
随机推荐
- HtmlWebpackPlugin实现资源的自定义插入
目前碰到的问题 我们用html-webpack-plugin的inject属性去自动插入打包后的js, css到页面中,但是如果想给script标签添加一个crossorigin属性呢, 例如: &l ...
- install brew cask
os x install brew cask '/usr/../../brew-cask.rb' does not exist brew 已安装完毕,安装brew cask brew install ...
- 找出生成json中的error_code,并加以处理
需求: 前段时间调用了百度AI的分词接口,因为不完全支持并发,一些调用产生了错误,混在json内部. 现在需要将未调用成功的内容重新调用一遍. 思考过程: 方法一: 开始想到的是调用的过程当中,如果报 ...
- 关于 " +new Date "
关于 " +new Date " 的个人见解 今天晚上,在一个Javascript的Q群里,有人问下面这种代码是什么意思: var time = +new Date; 这段代码中, ...
- Linux audio驱动模型
linux驱动 alsa模型: Linux ALSA声卡驱动之一:ALSA架构简介 Linux ALSA声卡驱动之二:声卡的创建 Linux ALSA声卡驱动之三:PCM设备的创建 Linux ALS ...
- Coursera课程 Programming Languages 总结
课程 Programming Languages, Part A Programming Languages, Part B Programming Languages, Part C CSE341: ...
- xss框架基础框架实现
0x00web服务器设计 (1)tornado处理请求和Application类要编写一个Tornado应用中最多的工作是定义类继承Tornado的RequestHandler类,主要用于将特定的ur ...
- flask_session_源码剖析
开始文件(部分): from flask import Flask,request,session app = Flask(__name__) app.secret_key = 'sdfsdfsd' ...
- cs231n spring 2017 lecture4 Introduction to Neural Networks 听课笔记
1. Backpropagation:沿着computational graph利用链式法则求导.每个神经元有两个输入x.y,一个输出z,好多层这种神经元连接起来,这时候已知∂L/∂z,可以求出∂L/ ...
- 一步步教你创建自己的数字货币(代币)进行ICO
本文从技术角度详细介绍如何基于以太坊ERC20创建代币的流程. 写在前面 本文所讲的代币是使用以太坊智能合约创建,阅读本文前,你应该对以太坊.智能合约有所了解,如果你还不了解,建议你先看以太坊是什么 ...