2

次のようなテキストファイルがあります。

jdkjf
kjsdh
jksfs
lksfj
gkfdj
gdfjg
lkjsd
hsfda
gadfl
dfgad

[非常に多くの行、つまり]

しかし、むしろそれが次のようになりたい

jdkjf kjsdh
jksfs lksfj
gkfdj gdfjg
lkjsd hsfda
gadfl dfgad

[等々]

そのため、テキスト ファイルをより少ないページ数で印刷できます。

もちろん、これは難しい問題ではありませんが、このような問題を解決するための優れたツールが世の中にあるのではないかと考えています。

編集:テキストファイルから他のすべての改行を削除する方法を探しているのではなく、テキストを「画像」として解釈し、適切な空白記号を書くことによってページにうまくレイアウトするツールを探しています。

4

2 に答える 2

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()
于 2012-10-16T19:36:27.117 に答える
0

(オペレーティング システムに名前を付けていないので、単に Linux、Mac OS X、またはその他の Unix と仮定します...)

あなたの例は、 "joining 2 lines together"という表現でも記述できるようです。

これはシェルxargsで( andの助けを借りて)達成できますがawk、例のように構造化された入力ファイルに対してのみです(結果は、それぞれに含まれる単語の数に関係なく、常に2つの単語を1行に配置します):

 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

他の人は、他にも何十ものまったく異なる方法とコマンドラインの組み合わせを思い付くことができると確信しています...


警告:明示的に奇数行のファイルをテストする必要があります。行数が奇数の場合、最後の入力行が正しく処理されない場合があります。

于 2012-10-17T07:33:27.713 に答える