3

次のような36行の入力が含まれています:

822
526006
1343315205
1.4.2
32
0.000000
13.048815
...
0
0
0

これは memcache stats コマンドからの出力です。したがって、ファイルからではありません。これらの行を単一行の列に変換するにはどうすればよいですか。一時ファイルを使用したくありません。

ありがとう、

4

6 に答える 6

10

これを試して:

awk '{printf("%s ", $0)}'

パイプを使用する:

whatever_your_command | awk '{printf("%s ", $0)}'

を使用する利点はprintf()、データの出力形式/間隔などを完全に制御できることです。

--

テスト

822
526006
1343315205
1.4.2
32
0.000000
13.048815

ファイル内のデータdata.txt:

awk '{printf("%s ", $0)}' data.txt

収量:

822 526006 1343315205 1.4.2 32 0.000000 13.048815 
于 2012-07-26T16:19:08.483 に答える
4
anuj@test:~$ cat num
1
2
3
4
5
anuj@test:~$ cat num |xargs
1 2 3 4 5
anuj@test:~$

cat と xargs で十分だと思います

于 2012-11-20T09:19:11.553 に答える
2

1文字のawkプログラムでも構いません

seq 10 | awk -v ORS=" " 1
于 2012-07-26T18:18:47.113 に答える
1

使用するsed

input | sed ':a;N;{s/\n/ /};ba'
于 2012-07-26T16:25:00.963 に答える
0

bashでは、このようなものを使用できます。

input="822
526006
1343315205
1.4.2
32
0.000000
13.048815"

次に、単純な for ループを使用します。

for row in $(echo "$input");do echo -en "$row ";done;echo

出力

822 526006 1343315205 1.4.2 32 0.000000 13.048815

最後のエコーは、プロンプトが同じ行に表示されないようにするためのものであることに注意してください。これをスクリプトで使用する場合は、適宜削除してください。

于 2016-07-14T00:09:03.333 に答える