我想在列中打印文本文件

时间:2012-10-15 18:48:36

标签: command-line printing io text-files

我有一个看起来像这样的文本文件:

jdkjf
kjsdh
jksfs
lksfj
gkfdj
gdfjg
lkjsd
hsfda
gadfl
dfgad

[很多行,就是]

但更喜欢它看起来像

jdkjf kjsdh
jksfs lksfj
gkfdj gdfjg
lkjsd hsfda
gadfl dfgad

[等等]

所以我可以在较少的页面上打印文本文件。

当然,这不是一个难题,但我想知道是否有一些优秀的工具来解决这些问题。

编辑:我不是想找到一种从文本文件中删除所有其他换行符的方法,而是一种将文本解释为“图片”的工具,然后将它们很好地放在页面上(通过编写适当的空白符号) )。

2 个答案:

答案 0 :(得分:0)

您可以使用此python代码。

tables=input("Enter number of tables ")
matrix=[]
file=open("test.txt")
for line in file:
 matrix.append(line.replace("\n",""))
 if (len(matrix)==int(tables)):
  print (matrix)
  matrix=[]
file.close()

答案 1 :(得分:0)

(因为你没有命名你的操作系统,我只是假设Linux,Mac OS X或其他一些Unix ......)

您的示例看起来也可以通过表达式“将2行连接在一起”来描述。

这可以在shell中实现 (在xargsawk的帮助下) - 但仅适用于结构类似于您的示例的输入文件(结果总是在一行上放两个单词,而不管每个单词包含多少个单词):

 cat file.txt | xargs -n 2 | awk '{ print $1" "$2 }'

单独使用awk 也可以实现(这次它真正加入了2个完整行,无论每个单词包含多少个单词):

 awk '{printf $0 " "; getline; print $0}' file.txt

或使用sed -

 sed 'N;s#\n# #' < file.txt 

此外, xargs可以做到这一点:

 xargs -L 2 < file.txt

我相信其他人可以提出其他几十种截然不同的方法和命令行组合...


警告:您必须明确测试奇数行的文件。在奇数行的情况下,可能无法正确处理最后一个输入行。