如何反转grep命令的输出?

时间:2017-06-30 09:02:54

标签: linux bash shell grep

我的grep命令有一个问题。在我调用的脚本中我使用:

   "ServicePassword":fooooooooooo
   "ServiceUserName":barrrrrrrrr
grep -E '"ServiceUserName"|"ServicePassword"' >> user.txt

但是在user.txt文件中我将首先得到“ServicePassword”:fooooooooooo然后“ServiceUserName”:barrrrrrrrrr 我如何使用grep命令将其反转以获取user.txt文件中的第一个ServiceUserName然后输出ServicePassword?我只需要这个序列。我试着改变:

grep -E '""ServicePassword""|"ServiceUserName"' >> user.txt

什么也没有....可能存在更好的解决方案?

4 个答案:

答案 0 :(得分:3)

grep只是过滤器id_biodiv_acteurman grep,要更改顺序必须使用其他工具,因为只有两个项目可能会添加print lines matching a pattern|sort(排序反向)可以帮忙。

|sort -r

答案 1 :(得分:2)

您可以使用并调整下面的tac command

$ cat test.txt
"ServicePassword":fooooooooooo
"ServiceUserName":barrrrrrrrr

$ egrep '"ServicePassword"|"ServiceUserName"' test.txt | tac
"ServiceUserName":barrrrrrrrr
"ServicePassword":fooooooooooo

答案 2 :(得分:0)

使用awk

awk '/ServicePassword/{pwd=$0};/ServiceUserName/{user=$0};
     END{printf pwd; print user}' 

答案 3 :(得分:0)

使用tac(与cat相反)

grep -E '"ServiceUserName"|"ServicePassword"' | tac >> user.txt