簡體   English   中英

有沒有辦法使用 sed 刪除文件的每一行之前的所有內容並包括一個制表符(或空格)?

[英]Is there a way to remove everything before and including a tab (or space) for each line of a file using sed?

我有一個文件,我想在其中刪除所有內容,包括每行的第一個空格。 例如,如果我的文件如下所示:

>JQ907469.1 Gracilariopsis mclachlanii voucher BG0072 23S ribosomal RNA gene, partial sequence; plastid
>JQ907467.1 Gracilariopsis longissima voucher BG0052 23S ribosomal RNA gene, partial sequence; plastid
>JQ907456.1 Hydropuntia rangiferina voucher BG0092 23S ribosomal RNA gene, partial sequence; plastid
>JQ907428.1 Gracilaria cornea voucher BG0112 23S ribosomal RNA gene, partial sequence; plastid
>JQ952662.1 Gracilariopsis tenuifrons voucher BG0042 23S ribosomal RNA gene, partial sequence; plastid

我希望它看起來像這樣

Gracilariopsis mclachlanii voucher BG0072 23S ribosomal RNA gene, partial sequence; plastid
Gracilariopsis longissima voucher BG0052 23S ribosomal RNA gene, partial sequence; plastid
Hydropuntia rangiferina voucher BG0092 23S ribosomal RNA gene, partial sequence; plastid
Gracilaria cornea voucher BG0112 23S ribosomal RNA gene, partial sequence; plastid
Gracilariopsis tenuifrons voucher BG0042 23S ribosomal RNA gene, partial sequence; plastid

我假設我可以使用 sed 來實現我的目標,但我對它的符號和語法還不夠熟悉,還沒有進行實驗。 本着這種精神,如果有人有解決方案,如果他們能解釋為什么代碼會這樣工作,我會很高興的。

干杯

使用正則表達式,並假設您使用的是當前合理的 GNU sed:

sed -r 's/[^ \t]+[ \t]//' yourfile

如果你對它的外觀感到滿意,那就做吧

sed -i -r 's/[^ \t]+[ \t]//' yourfile

它是如何工作的? s/開始搜索和替換

^[^ \\t]+[ \\t]是一個正則表達式,它轉換為從行首匹配所有非空格(或制表符)字符和第一個空格(或制表符)

//斜杠和命令第一部分中的斜杠s/是分隔符。 前兩個之間的位是搜索模式,后兩個之間的位是替換(在您的情況下,沒有)。

-r告訴 GNU sed 使用增強的正則表達式語法。

-i告訴它就地修改文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM