【发布时间】:2017-07-26 18:48:21
【问题描述】:
我需要一些关于如何提取行的特定字符串的帮助。
我有一个包含数千行的文件,如下所示:
Eukaryota; Alveolata; Ciliophora; Intramacronucleata; Paramecium#
Eukaryota; Viridiplantae; Streptophyta; Embryophyta#
Bacteria; Cyanobacteria; Synechococcales; Acaryochloridaceae; Acaryochloris#
Eukaryota; Viridiplantae#
Bacteria; Proteobacteria; Alphaproteobacteria#
我想获取每行的第一项和最后一项。所以输出将是:
Eukaryota; Paramecium#
Eukaryota; Embryophyta#
Bacteria; Acaryochloris#
Eukaryota; Viridiplantae#
Bacteria; Alphaproteobacteria#
我知道如何用
获得第一列awk '{print$1}' fileIn > fileOut
但我不知道如何获取最后一项,因为它总是在不同的列中。
我尝试添加 # 然后在 # 之前保留 XX 个字符
grep -E -o '.{X,X}PATTERN. fileIn > fileOut
输出如下所示: 莱斯;磺草科;硫化叶# ; Thermoproteaceae;卡迪维加# 莱斯;卤草科;卤代鱼# 卤草科;光方体# 麦芽酒; Natrialbaceae; Natrialba#
但是我必须重复这个过程并删除 ;直到我只剩下最后一个项目。
我已经搜索了是否有任何 grep 或 awk 选项来执行此操作,提取第一列和最后一列或仅提取附加到 # 的字符,但我找不到任何适合我的选项。
如果有任何关于如何进行的建议,我将不胜感激。
谢谢。
【问题讨论】:
-
您可以使用
$NF获取每行的最后一个文件,这是您想要的吗? -
谢谢 $NF 不是我想要的,但它可以在我只需要最后一项的情况下工作。 :)