我使用bash查看文件并解析结果。有人能告诉我如何使用cut / awk分割字符串并使用单个命令获得所需的输出吗?我可以通过单独剪切获得以下输出(使用2个命令和连接)但我想使用单个命令而不是两个命令。
1/98 | (PASSED) com.yahoo.qa.java.projects.stackoverview.questions.Password_01() | 21:20:20
str1=`cat test.log | tail -1 | cut -d '|' -f 1`
str2=`cat test.log | tail -1 | cut -d '|' -f 2 | sed -e 's/com.yahoo.qa.java.projects./''/g'`
str3="${str1} | ${str2}"
1/98 | (PASSED) stackoverview.questions.Password_01
答案 0 :(得分:3)
由于这是单个行上的简单替换,因此它比awk更适合sed而不适合切割:
$ sed 's/\(.*| [^ ]* \)com\.yahoo\.qa\.java\.projects\.\([^(]*\).*/\1\2/' file
1/98 | (PASSED) stackoverview.questions.Password_01
答案 1 :(得分:1)
关注单awk
可能对您有帮助。
awk 'END{sub(/com\.yahoo\.qa\.java\.projects\./,"",$4);print $1,$2,$3,$4}' Input_file
对于所有类型的awk
以下内容的OR也可以帮助您。(根据SIR ED的建议):
awk '{value=$0} END{split(value, a," ");sub(/com.yahoo.qa.java.projects\./,"",a[4]);print a[1],a[2],a[3],a[4]}' Input_file
答案 2 :(得分:1)
使用 awk
$ awk -F "com[.]yahoo[.]qa[.]java[.]projects[.]" 'sub(/\(\).*/,"",$2)' file
1/98 | (PASSED) stackoverview.questions.Password_01