Rhe*_*hea 4 command-line text-processing
我想在>&之后 grep 数据 |。我使用了这个命令:
grep -o ' |.*$'| cut -c5-
Run Code Online (Sandbox Code Playgroud)
但它只是在以下之后提供数据|:
> Aminobenzoate
Asthma | Atrazine
Autoimmune thyroid disease | Bacterial
B cell receptor signaling pathway | Benzoate
Bile secretion | beta-Lactam
> Biosynthesis
Caffeine metabolism | Caprolactam
Calcium signaling pathway | Carbapenem
Run Code Online (Sandbox Code Playgroud)
Aminobenzoate
Atrazine
Bacterial
Benzoate
beta-Lactam
Biosynthesis
Caprolactam
Carbapenem
Run Code Online (Sandbox Code Playgroud)
我建议使用sed:
sed 's/.*[|>] *//'
Run Code Online (Sandbox Code Playgroud)
这适用于您的示例,但您可能需要对其进行调整,具体取决于如何处理没有任何|或>. 如果这些应该被完全删除,请使用
sed -n 's/.*[|>] *//p'
Run Code Online (Sandbox Code Playgroud)
这意味着默认情况下不输出(选项-n),但p如果s命令可以执行替换,则打印一行()。
awk也可以使用。您可以通过使用多个字段分隔符-F与awk获得这两个>和|。也可以使用该sub选项清除打印匹配列时出现在文本之前的第一个前导空格:
awk -F'[>|]' '{sub(/^\ /, "",$2); print $2}' file.txt
Run Code Online (Sandbox Code Playgroud)