我有一个包含以下行的文件:
56228//Ube2j1
68192//Leprotl1
66074//Tmem167
66074//Tmem167
66074//Tmem167
56445//Dnaja2
72061//2010111I01Rik
返回以下内容的最佳命令是什么?基本上我只想在//
之后返回字符。
Ube2j1
Leprotl1
Tmem167
Tmem167
Tmem167
Dnaja2
2010111I01Rik
答案 0 :(得分:0)
您可以在grep(包含-P
参数)中使用lookbehinds来打印//
之后的所有字符,
$ grep -oP '(?<=\/\/).*' file
Ube2j1
Leprotl1
Tmem167
Tmem167
Tmem167
Dnaja2
2010111I01Rik
您还可以在正则表达式中使用\K
来丢弃之前匹配的字符。
$ grep -oP '\/\/\K.*' file
Ube2j1
Leprotl1
Tmem167
Tmem167
Tmem167
Dnaja2
2010111I01Rik
使用以下sed命令,仅当您要打印其间的空白行时。
$ sed 's/^.*\/\///g' file
Ube2j1
Leprotl1
Tmem167
Tmem167
Tmem167
Dnaja2
2010111I01Rik
答案 1 :(得分:0)
只需使用cut
:
cut -f3 -d/ filename
输出:
Ube2j1
Leprotl1
Tmem167
Tmem167
Tmem167
Dnaja2
2010111I01Rik
答案 2 :(得分:0)
以下grep命令将提取两个斜杠后的任何文本。需要注意的是,它只会从结尾处提取字符串的一部分,而不是从头开始(例如,使用&#34; 123 // 456 // 789&#34;,它将返回&#34; 789&#34 ;而不是&#34; 456 // 789)。
$ grep -o "[^\/][^\/.]*$" file
Ube2j1
Leprotl1
Tmem167
Tmem167
Tmem167
Dnaja2
2010111I01Rik
答案 3 :(得分:0)
这个awk
将完成这项工作:
awk -F"//" '{print $2}' file
Ube2j1
Leprotl1
Tmem167
Tmem167
Tmem167
Dnaja2
2010111I01Rik