awk 和 sed 挑战:调整文本宽度
那么让我们看看如何做到这一点:将文本宽度修剪到某个值(例如 10)内。 对于超过 10 行,将其分成多行。
例子: 一个文本文件:
<前><代码>01234567 01234567890123456789abcd 0123
应改为:
<前><代码>01234567 0123456789 0123456789 abcd 0123
那么我们如何使用 sed 或 awk 尽可能短地做到这一点呢?
So let's see how can we do this: trim the text width within a certain value, say, 10.
For lines longer than 10, break it into multiple lines.
Example:
A text file:
01234567 01234567890123456789abcd 0123
should be changed to:
01234567 0123456789 0123456789 abcd 0123
So how can we do it using sed or awk as short as possible?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
使用适合工作的适当工具...
Use the proper tool for the job...
或者,稍微短一些(比 Jonathan Dursi 的答案):
在 MacOS X 10.6.4 上测试,不使用 GNU sed。
Or, marginally shorter (than Jonathan Dursi's answer):
Tested on MacOS X 10.6.4, which does not use GNU sed.
或者,如果这不起作用(例如,没有足够新的 gnu sed),只需插入换行符并确保它被引用:
您也可以将其音译为 awk:
or, if that doesn't work (eg, don't have a sufficiently new gnu sed), just insert a newline and make sure it's quoted:
You can pretty much transliterate that into awk, too:
在具有可变宽度的 awk 中:
当行是最大行宽度的精确倍数时,最后的语句可防止打印额外的换行符。
In
awk
with a variable width:The final statement prevents the printing of extra newlines when the line is an exact multiple of the maximum line width.