测试文本内容如下:
# 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}}'