如何使用perl one liner將行分割成多行。如何使用Perl的一個班輪將一行分成多個使用正則表達式?
輸入:
AAAA | BBBB | CCCCCCCCCCC | 19999AAA | AAA
輸出:
AAAA
BBBB
CCCCCCCCCCC
19999AAA
AAA
如何使用perl one liner將行分割成多行。如何使用Perl的一個班輪將一行分成多個使用正則表達式?
輸入:
AAAA | BBBB | CCCCCCCCCCC | 19999AAA | AAA
輸出:
AAAA
BBBB
CCCCCCCCCCC
19999AAA
AAA
使用像其中的一個:
perl -pe 's/ \| /\n/g'
perl -nE 'say for split/\| /'
總是使用//作爲split的第一個參數(除了'split'''的特殊情況),所以你不要忘記它總是一個正則表達式。你的分裂失敗。 – ysth
您需要在兩個示例中反斜槓管道。 –
這就是我應得的發佈從手機未經測試:-)謝謝你,我編輯。 –
一種方法是用一個換行符替換空格和豎線分隔符。
echo "your input" | perl -pe 's/ \| /\n/g'
您可以在此執行拆分並加入您的字符串。
echo "your input" | perl -ne 'print join("\n", split/\| /, $_)'
注:我會很安全和使用\s*\|\s*
|
事後纔來匹配多個空格。
您最後的解決方案不會殺死所有空間。它確實太複雜了。 – user2719058
既然你問了一個一行,我想你不是試圖把這個在現有的Perl腳本,那麼爲什麼不使用這個普通的shell命令:
tr -s '| ' '[\n*]'
這將第一組中的任何字符序列替換爲換行符。獨特的語法[\n*]
確保它適用於任何符合POSIX的tr
。隨着GNU或BSD tr
,這個簡單的語法也應該工作:
tr -s '| ' '\n'
差不多同樣可以用Perl適當進行:
perl -pe 'tr/ |/\n/s'
我不知道我理解的問題。你只想用換行符替換豎線字符嗎?即。 'S/\ |/\ n/g'? –