複数行の1列を1行に変換したいです。
例:
1
1
1
1
1
2
2
2
3
3
4
そして私はほしい:
11111222334
どんな提案がありますか?
答え1
生地:
$ paste -s -d "" file
11111222334
区切りなしですべての行を一緒に圧縮します。
あるいは、これらの解決策は末尾の改行文字も削除します。
perl -pe chomp file
awk -v ORS="" 1 file
答え2
以下を使用してすべての改行文字を削除できますtr
。
tr -d \\n <infile
出力には末尾の改行がないため、必要に応じて(たとえば、別のファイルにリダイレクト):
{ tr -d \\n <infile; printf \\n; } >outfile
逆に、フィールドをスペースで区切る必要がある場合は、次のように実行できます。
row=$(tr \\n \ <infile)
printf %s\\n "${row%?}" >outfile
しかし、paste
ここは本当に輝いています...
答え3
コマンドをエコーし、出力を新しいファイルに送信することもできます。
$ echo $(cat file) >> rows.txt
各行間のスペースを防ぐために、同じ行にsedを使用できます。
$ echo $(cat file) | sed 's/ //g' >> rows.txt