测试文本内容如下:

# cat textfile
hadoop hdfs yarn spark zookeeper
mapreduce hive hbase scala kafka
CHAVIN mysql PostgreSQL mongodb
192.168.100.231 192.168.100.232
192.168.10.23
CHAVIN mysql linux hadoop spark hive
mysql CHAVIN hadoop linux spark hbase
mysql mysql mysql mysql mysql mysql

现在以逆序形式显示上面文本:

# tac textfile
mysql mysql mysql mysql mysql mysql
mysql CHAVIN hadoop linux spark hbase
CHAVIN mysql linux hadoop spark hive
192.168.10.23
192.168.100.231 192.168.100.232
CHAVIN mysql PostgreSQL mongodb
mapreduce hive hbase scala kafka
hadoop hdfs yarn spark zookeeper

总结:这里使用tac逆序打印行,细心的人能注意到:tac就是反过来的cat命令。tac默认的行分界符是\n,我们可以通过参数-s “分解符”指定行分界符。

这个功能也可以通过awk实现:

# awk '{ lifo[NR]=$0 }END{ for(lno=NR;lno>0;lno--){print lifo[lno]}}' textfile

如果将行逆序,同时将行字段逆序方法如下:

#awk '{ lifo[NR]=$0 }END{ for(lno=NR;lno>0;lno--){print lifo[lno]}}' textfile | awk '{ for(i=NF;i>0;i--){if(i==1){print $i}else{printf $i","}fi}}'

shell技巧之以逆序形式打印行的更多相关文章

  1. 【shell】文本按行逆序

    1.最简单的方法是使用tac [root ~]$ seq |tac 2.使用tr和awk. tr把换行符替换成自定义的分隔符,awk分解替换后的字符串,并逆序输出 [root ~]$ seq | tr ...

  2. C语言链表全操作(增,删,改,查,逆序,递增排序,递减排序,链式队列,链式栈)

    一,数据结构——链表全操作: 链表形式: 其中,每个节点(Node)是一个结构体,这个结构体包含数据域,指针域,数据域用来存放数据,指针域则用来指向下一个节点: 特别说明:对于单链表,每个节点(Nod ...

  3. C语言整数按照二进制逆序,输出逆序后的整数值

    问题来源,今天早上和一舍友吃早餐的时候谈到的一个问题,将一个整数按照二进制逆序,然后输出逆序后的数值. 我们知道数值在内存中都是以二进制的形式存放的,假如我们是32位机,每8位为一个字节,int型在3 ...

  4. 基于visual Studio2013解决面试题之0504单链表逆序

     题目

  5. 【链表问题】打卡9:将单链表的每K个节点之间逆序

    前言 以专题的形式更新刷题贴,欢迎跟我一起学习刷题,相信我,你的坚持,绝对会有意想不到的收获.每道题会提供简单的解答,如果你有更优雅的做法,欢迎提供指点,谢谢. 注:如果代码排版出现了问题麻烦通知我下 ...

  6. [六] 函数式接口的复合方法示例 predicate 谓词逻辑运算 Function接口 组合运算 比较器 逆序 比较链

    复合的方法 有些函数式接口提供了允许复合的方法 也就是可以将Lambda表达式复合成为一个更加复杂的方法 之前的章节中有说到: 接口中的compose, andThen, and, or, negat ...

  7. 常见面试算法题JS实现-仅用递归函数和栈操作逆序一个栈

    前言: 因为JAVA和JS语言特性的不同,有些东西在JAVA中可能需要一些技巧和手段才能实现的复杂程序,但是在JS中可能就是天然存在的,所以这套书里面的题目不会全部用JS去实现一遍,因为可能JS的实现 ...

  8. 给出一列数a1,a2,a3....an,求它们的逆序对数,即有多少个有序对(i,j) 使得iaj,n高达10的6次方

    //归并排序 //#include<stdio.h> //#include<string.h> //#include<algorithm> //#include&l ...

  9. POJ 2299 Ultra-QuickSort (树状数组 && 离散化&&逆序)

    题意 : 给出一个数n(n<500,000), 再给出n个数的序列 a1.a2.....an每一个ai的范围是 0~999,999,999  要求出当通过相邻两项交换的方法进行升序排序时需要交换 ...

随机推荐

  1. SpringCloud服务间调用

    SpringCloud服务间的调用有两种方式:RestTemplate和FeignClient.不管是什么方式,他都是通过REST接口调用服务的http接口,参数和结果默认都是通过jackson序列化 ...

  2. gitlab 502 报错

    这里从网上查到文章,我这里看了一下我这里是unicorn的问题 说一下情况:这里我们的一个前端修改了大量的打包,并进行了打包.然后提交merge request  分支到master,结果看到页面50 ...

  3. iOS Block不能修改外部变量的值

    __block int a = 0; void (^foo)(void) = ^{ a = 1; }; Block不允许修改外部变量的值.Apple这样设计,应该是考虑到了block的特殊性,bloc ...

  4. 译: 3. RabbitMQ Spring AMQP 之 Publish/Subscribe 发布和订阅

    在第一篇教程中,我们展示了如何使用start.spring.io来利用Spring Initializr创建一个具有RabbitMQ starter dependency的项目来创建spring-am ...

  5. Selenium Web 自动化 - Selenium常用API

    Selenium Web 自动化 - Selenium常用API 2016-08-01 目录 1 对浏览器操作  1.1 用webdriver打开一个浏览器  1.2 最大化浏览器&关闭浏览器 ...

  6. Unity读取Excel文件(附源代码)

    今天想弄个Unity读取Excel的功能的,发现网上有许多方法,采用其中一种方法:加入库文件 Excel.dll 和ICSharpCode.SharpZipLib.dll库文件,(还有System.D ...

  7. <王川自选集第一卷电子书 >读书笔记

    什么叫限定自己能力的边界?就是接受承认一个事实,世界上大多数东西你并不懂,或者一知半解,懂得很肤浅.只有少数东西,由于你可以天天深入的接触,你才有深刻的理解. 购买一个公司的股票,却从未使用其核心产品 ...

  8. http://www.cnblogs.com/chenmeng0818/p/6370819.html

    http://www.cnblogs.com/chenmeng0818/p/6370819.html js中的正则表达式入门   什么是正则表达式呢? 正则表达式(regular expression ...

  9. Asp.net Daily Build by MsBuild

    :: 目录结构:: +GW.Point.BLL --dir dll:: +GW.Point.IBLL --dir dll:: +GW.Point.DAL --dir dll:: +GW.Point.I ...

  10. Git -- 搭建git服务器

    在远程仓库一节中,我们讲了远程仓库实际上和本地仓库没啥不同,纯粹为了7x24小时开机并交换大家的修改. GitHub就是一个免费托管开源代码的远程仓库.但是对于某些视源代码如生命的商业公司来说,既不想 ...