Sed
如果長於 XY,如何刪除線?
如果一行長於例如:2048 個字元,我該如何刪除它?
sed '/^.\{2048\}./d' input.txt > output.txt
這是一個刪除具有 2049 個或更多字元的行的解決方案:
sed '/.\{2049\}/d' <file.in >file.out
正則表達式
.\{2049\}
將匹配包含 2049 個字元的子字元串的任何行(另一種說法是“至少 2049 個字元”)。該d
命令從輸入中刪除它們,在輸出中只產生較短的行。BSD
sed
(在例如 macOS 上)只能在運算符中處理高達 256 的重複計數(在 shell中查看 ;\{...\}
的值)。在這些系統上,您可以改為使用:RE_DUP_MAX``getconf RE_DUP_MAX``awk
awk 'length <= 2048' <file.in >file.out
從字面上模仿
sed
解決方案awk
:awk 'length >= 2049 { next } { print }' <file.in >file.out
請注意,任何
awk
實現只能保證能夠處理長度為LINE_MAX
字節的記錄(請參閱getconf LINE_MAX
shell),但可能支持更長的記錄。在 macOS 上,LINE_MAX
是 2048。