Paste -d または tr を使用して垂直テキストを水平テキストに変換します。

Paste -d または tr を使用して垂直テキストを水平テキストに変換します。

縦型のデータリストがありますが、横型のデータリストが欲しいです。

fl.txt:

data
1
2
3
4
5

希望の出力は次のとおりです。

1 2 3 4 5

私のコード:このコマンドを使用すると、最後の値である5のみが印刷されます。

 paste -s -d "" fl.txt

答え1

Windowsテキストデータを含むファイルを使用していることは注釈によって明らかです。次のコマンドを使用してUnixテキストファイルに変換しますdos2unix

dos2unix fl.txt

DataUnixテキストファイルの場合は、sed 1d fl.txtヘッダーを含むファイルの最初の行を使用または削除できますtail -n +2 fl.txt

結果行は、すべての改行文字を空白に置き換えることで、1行から空白で区切られた列に変換できます。

sed 1d fl.txt | tr '\n' ' '

ただし、これにより改行文字で終わらない出力が生成されます。

paste提案したのと同じ方法で使用することもできます。

sed 1d fl.txt | paste -s -d ' ' -

このpasteコマンドは、改行文字で終わる単一行を生成します。

答え2

GNU sedの使用

sed '1d; s/\r$//' f1.txt | paste -sd " "

またはsedに貼り付ける部分を実装してください。

sed -n '1d; s/\r$//; H; ${ x; s/^\n//; s/\n/ /g; p }' f1.txt

答え3

Bashまたはksh93の簡単なオプション:

echo $(<fl.txt)

または:

xargs -a fl.txt

最初の行は次のように削除できます。

{ head -1 >/dev/null; paste -sd' '; } <fl.txt

または:

{ head -1 >/dev/null; fmt -100; } <fl.txt

サブシェルから:

(>/dev/null head -1; xargs) <fl.txt

関連情報