1

Unixで複数行のファイルを単一行のファイルに変換する最も簡単なコマンドは何ですか?

ファイル内のサンプルデータは

SELECT * FROM TABLE1 t1
   JOIN TABLE2 t2 ON (t1.ID = t2.ID)
   WHERE t1.ID = 123

望ましい出力は

SELECT * FROM TABLE1 t1 JOIN TABLE2 t2 ON (t1.ID = t2.ID) WHERE t1.ID = 123

私は使用してみました:

/bin/sed '{:q;N;s/  / /g;s/\n//g;t q}' $1

しかし、それは成功していません。お手伝いありがとう。

4

4 に答える 4

2

sed次のように使用してみてください。

sed ':a; N; $!ba; s/\n\s*/ /g' file

または、awk次のように使用します。

awk '{ $1 = $1 }1' RS= file

結果:

SELECT * FROM TABLE1 t1 JOIN TABLE2 t2 ON (t1.ID = t2.ID) WHERE t1.ID = 123
于 2013-01-09T06:44:36.807 に答える
1

unix ディレクトリに保存されている sql を更新しようとしているようです。Notepad++ がインストールされている場合は、\r\nをスペースまたは空の文字列に置き換えるだけです。検索モードで必ず「拡張」を選択してください

于 2013-01-09T06:41:10.920 に答える
1

Perl の場合:

perl -p -e'chomp' filename

補遺:

末尾に改行を入れ、先頭の空白を各行から削除することが重要な場合は、次のようにします。

perl -l -n -e's/^\s+//; push @x, $_; END { print join( ' ', @x ); }' filename
于 2013-01-09T06:53:05.937 に答える
0

最も簡単な方法 (「シンプル」の定義による) は次のとおりです。

tr -s \\n ' '

出力に改行を入れたい場合:

 { tr -s \\n \ < input-file && echo; } > output-file
于 2013-01-09T21:42:15.717 に答える