-1
我需要處理一個日誌文件。我通過<STDIN>
將它發送給Perl。我只需要輸出摘要,其中包含幾個等號。在Perl中,如何輸出(打印)字符串後面的所有行?
摘要是日誌中的最後一位。所以,我需要從=
到EOF之後開始的所有事情。
我嘗試使用while
循環與「next unless
」,但我無法得到它的工作。
我需要處理一個日誌文件。我通過<STDIN>
將它發送給Perl。我只需要輸出摘要,其中包含幾個等號。在Perl中,如何輸出(打印)字符串後面的所有行?
摘要是日誌中的最後一位。所以,我需要從=
到EOF之後開始的所有事情。
我嘗試使用while
循環與「next unless
」,但我無法得到它的工作。
您需要一個標誌或兩個循環。
在輸出中包括觸發線:
perl -e'
while (<>) {
last if /===/;
}
if (defined($_)) {
print;
while (<>) {
print;
}
}
' log
perl -ne'print if $print ||= /===/' log
不包括在輸出觸發線:
perl -e'
while (<>) {
last if /===/;
}
if (defined($_)) {
while (<>) {
print;
}
}
' log
perl -ne'last if /===/; END { print while <> }' log
perl -ne'print if $print; $print ||= /===/' log
perl -ne'print unless 1 .. /===/' log
@SinanÜnür,我想在這個特別的解決方案中表現得很清楚,而且我很懶得檢查是否'BLOCK while'<>;'表示'在定義($ _ = <>);'時執行BLOCK'。 [它的確如此。詛咒你讓我檢查;)] – ikegami
請問那些誰投下來解釋爲什麼,所以我能學到什麼? –
我沒有,但這很清楚:顯示你的代碼和輸入/輸出的樣本。它還使您更容易在描述中精確和清晰地表達。這個問題非常不完整,並且不清楚。 – zdim