Grep - 从文件的行中删除字符

时间:2014-08-27 01:03:22

标签: grep

我有一个包含以下行的文件:

56228//Ube2j1
68192//Leprotl1
66074//Tmem167
66074//Tmem167
66074//Tmem167
56445//Dnaja2
72061//2010111I01Rik

返回以下内容的最佳命令是什么?基本上我只想在//之后返回字符。

Ube2j1
Leprotl1
Tmem167
Tmem167
Tmem167
Dnaja2
2010111I01Rik

4 个答案:

答案 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