我的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
什么也没有....可能存在更好的解决方案?
答案 0 :(得分:3)
grep只是过滤器id_biodiv_acteur
:man 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