Unix“换行”过滤器

时间:2009-12-24 14:52:57

标签: unix shell filter

有一个吗?

我可以这样使用的东西:

$ cat someFileWithLongLines.txt | wrap -80 --indent|less

7 个答案:

答案 0 :(得分:11)

GNU coreutils有一个名为fmt的命令:

$ fmt -40 -t lorem
Lorem ipsum dolor sit amet, consectetur
   adipisicing elit, sed do eiusmod
   tempor incididunt ut labore et
   dolore magna aliqua. Ut enim
   ad minim veniam, quis nostrud
   exercitation ullamco laboris
   nisi ut aliquip ex ea commodo
   consequat. Duis aute irure dolor
   in reprehenderit in voluptate velit
   esse cillum dolore eu fugiat nulla
   pariatur. Excepteur sint occaecat
   cupidatat non proident, sunt in
   culpa qui officia deserunt mollit
   anim id est laborum.

编辑:如您所见,fmt在给定宽度内的字边界上打破了线条。将其与fold的硬边界进行对比。 fmt所做的缩进类型可能不是您要查找的内容,但您可以通过-t管道(不使用pr选项)以获得边距样式缩进:

fmt -40 lorem | pr -To 6

答案 1 :(得分:6)

您可能需要fold命令。

$ fold -w 80 file.txt

$ cat file.txt | fold

答案 2 :(得分:2)

如果您愿意,可以使用pr缩进,例如

$ fold -w 76 -s file.txt | pr -T --indent=4

答案 3 :(得分:1)

该命令被称为'fold',但它不支持缩进行的包装部分。你需要为那个破坏awk。

答案 4 :(得分:1)

该命令名为fold。

$ cat someFileWithLongLines.txt |折

答案 5 :(得分:0)

你可以使用awk

width=10
awk -vw="$width" '{
    i=1
    while( length(substr($0,i,w) ) ){
        print substr($0,i,w)
        i+=w
    }
}' file

输出:

$ more file
this is a line 1
this is a line 2
$ fold -w 10 file
this is a
line 1
this is a
line 2
$ ./shell.sh
this is a
line 1
this is a
line 2

答案 6 :(得分:0)

另一种替代方法是名为const addToDB = (newObject) => { newObject.id = `1`; objectsArray.push(newObject); return newObject; } 的gnu实用程序(不要与另一个标准的unix命令columns混淆)

使用这样大的宽度可以完全消除包裹:

column

autogen package的一部分。)