Shell-Script

為文件中的每一行刪除空格直到每一行的末尾

  • March 29, 2021

我正在嘗試從每一行中刪除空格,直到文件中每一行的最後一個單詞。

範例輸入文件:

808 0    C01124       Amazon            45/234Birch         00             YYY
808 0    C01184       Flipkart          45/234Lotus         01             YYY
808 0    C01186       PrimeTime         45/23XCCCCH         08             YYY
808 0    C01125       DMART             5/23PPPPPPP         09             YYY

格式有點像上面的,空格不均勻,最後一個單詞總是’YYY’。我的要求是:我想保留 YYY 之後的空格,但我想刪除所有其他空格。

期望的輸出:

8080C01124Amazon45/234Birch00YYY
8080C01184Flipkart45/234Lotus01YYY
8080C01186PrimeTime45/23XCCCCH08YYY
8080C01125DMART5/23PPPPPPP09YYY

我嘗試過使用sedtr命令,但它變得一團糟,所有的行都變成了一行。我想像上面那樣隔離,但我無法達到要求。我該怎麼做?

有多種方式。至少對我來說,最明顯的是在 sed 中使用循環。

sed  -e :loop -e 's/  *\(.*YYY\)/\1/;t loop'

(第一個斜線後有兩個空格)。:loop只是一個標籤。匹配一個或多個空格,s/ *\(.*YYY\)/\1/後跟某事,然後是 YYY,並將其替換為沒有前導空格的相同內容。如果發生替換,t loop則說去標籤。每次循環它都會刪除 YYY 之前的一個空格塊。YYY 之後沒有任何內容觸及空格或其他任何內容。

引用自:https://unix.stackexchange.com/questions/640169