Shell-Script
為文件中的每一行刪除空格直到每一行的末尾
我正在嘗試從每一行中刪除空格,直到文件中每一行的最後一個單詞。
範例輸入文件:
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
我嘗試過使用
sed
和tr
命令,但它變得一團糟,所有的行都變成了一行。我想像上面那樣隔離,但我無法達到要求。我該怎麼做?
有多種方式。至少對我來說,最明顯的是在 sed 中使用循環。
sed -e :loop -e 's/ *\(.*YYY\)/\1/;t loop'
(第一個斜線後有兩個空格)。
:loop
只是一個標籤。匹配一個或多個空格,s/ *\(.*YYY\)/\1/
後跟某事,然後是 YYY,並將其替換為沒有前導空格的相同內容。如果發生替換,t loop
則說去標籤。每次循環它都會刪除 YYY 之前的一個空格塊。YYY 之後沒有任何內容觸及空格或其他任何內容。