shell技巧之以逆序形式打印行


測試文本內容如下:

# 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}}'


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM