縦型のデータリストがありますが、横型のデータリストが欲しいです。
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
Data
Unixテキストファイルの場合は、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