爲了提高可讀性,我的輸入包含多個製表符和空格。我想使用perl -a
修改字段,然後以原始格式打印出該行。 (數據來自findup
,我展示的重複文件,浪費空間的計數)輸入:「perl -a」能否以某種方式使用原始空白重新加入@F?
2 * 4096 backup/photos/photo.jpg photos/photo.jpg
2 * 111276032 backup/books/book.pdf book.pdf
輸出將現場3轉換爲千字節,這樣的:
2 * 4 KB backup/photos/photo.jpg photos/photo.jpg
2 * 108668 KB backup/books/book.pdf book.pdf
在我的夢想世界,這將是我的代碼,因爲我可以將Perl來自動重組@F
並保留原始空白:
perl -lanE '$F[2]=int($F[2]/1024)." KB"; print;'
在現實生活,加入一個空間似乎是我唯一的選擇:
perl -lanE '$F[2]=int($F[2]/1024)." KB"; print join(" ", @F);'
是否有任何自動變量記住分隔符?如果我有這樣的魔法陣列,代碼將是:
perl -lanE 'BEGIN{use List::Util "reduce";} $F[2]=int($F[2]/1024)." KB"; print reduce { $a . shift(@magic) . $b } @F;'
順便說一句,與單元之間的間隔打印:'打印 「@F」;'' – zdim