2013-11-15 15 views

回答

0

使用像其中的一個:

perl -pe 's/ \| /\n/g' 
perl -nE 'say for split/\| /' 
+0

總是使用//作爲split的第一個參數(除了'split'''的特殊情況),所以你不要忘記它總是一個正則表達式。你的分裂失敗。 – ysth

+0

您需要在兩個示例中反斜槓管道。 –

+1

這就是我應得的發佈從手機未經測試:-)謝謝你,我編輯。 –

1

一種方法是用一個換行符替換空格和豎線分隔符。

echo "your input" | perl -pe 's/ \| /\n/g' 

您可以在此執行拆分並加入您的字符串。

echo "your input" | perl -ne 'print join("\n", split/\| /, $_)' 

注:我會很安全和使用\s*\|\s*|事後纔來匹配多個空格。

+0

您最後的解決方案不會殺死所有空間。它確實太複雜了。 – user2719058

1

既然你問了一個一行,我想你不是試圖把這個在現有的Perl腳本,那麼爲什麼不使用這個普通的shell命令:

tr -s '| ' '[\n*]' 

這將第一組中的任何字符序列替換爲換行符。獨特的語法[\n*]確保它適用於任何符合POSIX的tr。隨着GNU或BSD tr,這個簡單的語法也應該工作:

tr -s '| ' '\n' 

差不多同樣可以用Perl適當進行:

perl -pe 'tr/ |/\n/s' 
相關問題