web-dev-qa-db-ja.com

テキストファイルから改行を削除するにはどうすればよいですか?

次のデータがあり、すべてを1行にまとめる必要があります。

私はこれを持っています:

22791

;

14336

;

22821

;

34653

;

21491

;

25522

;

33238

;

私はこれを必要とする:

22791;14336;22821;34653;21491;25522;33238;

編集

これらのコマンドはどれも完全に機能していません。

それらのほとんどは、次のようなデータを許可します。

22791

;14336

;22821

;34653

;21491

;25522
83
Alucard
tr -d '\n' < yourfile.txt

編集:

ここに投稿されたコマンドがどれも機能しない場合、フィールドを区切る改行以外のものがあります。おそらく、ファイルにDOS/Windowsの行末文字があります(その場合でもPerlソリューションが機能すると期待していますが)。

試してください:

tr -d "\n\r" < yourfile.txt

それがうまくいかない場合は、ファイルをより詳しく調べて(たとえば16進エディタで)、削除したい文字が実際にそこにあるかどうかを調べる必要があります。

188
Tyler McHenry
Perl -p -i -e 's/\R//g;' filename

仕事をしなければなりません。

8
ZyX
paste -sd "" file.txt
7
Amardeep AC9MF

つかいます

head -n 1 filename | od -c 

何が問題のキャラクターであるかを理解するために。次に使用する

tr -d '\n' <filename

lF用

tr -d '\r\n' <filename

cRLF用

4
MrE
tr -d '\n' < file.txt

または

awk '{ printf "%s", $0 }' file.txt

または

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

このページ here には、改行を削除する他の方法がたくさんあります。

猫の虐待を削除するために編集:)

4
Vivin Paliath

Vimでファイルを編集できます。

$ vim inputfile
:%s/\n//g
4
loganaayahee

オタクの事実:代わりにASCIIを使用してください。

tr -d '\012' < filename.extension   

(編集された原因私は同じ解決策を持っていたフリッギンの答えを見ませんでした、唯一の違いは私のものがASCIIを持っていたことでした)

2
Byfjunarn

データがfile.txtにある場合:

echo $(<file.txt) | tr -d ' '

$(<file.txt)」はファイルを読み取り、その内容を一連の単語として提供し、「エコー」はそれらの間にスペースを入れてエコーします。次に、「tr」コマンドはスペースを削除します。

22791;14336;22821;34653;21491;25522;33238;
1
$ Perl -0777 -pe 's/\ n + // g'入力>出力
$ Perl -0777 -pe 'tr/\ n // d'入力>出力
1
Greg Bacon

xargsも改行を使用します(ただし、最後の末尾の改行を追加します):

xargs < file.txt | tr -d ' '
1
marky

Geditテキストエディターの使用(3.18.3)

  1. 検索をクリックします
  2. 検索と置換...をクリックします
  3. 検索フィールドに\n\sを入力します
  4. 残す置換空白(なし)
  5. チェック正規表現ボックス
  6. 検索ボタンをクリックします

注:これは、OPの元の7年前の問題を正確に解決するものではありませんが、同様の「テキストをすべて1行で取得する方法」の質問でSEからここにたどり着く一部のnoob Linuxユーザー(私のような)に役立つはずです。

今日は同じケースで、vimまたはnvimで非常に簡単でした。gJを使用して行を結合できます。あなたのユースケースのために、ただ

99gJ

これにより、99行すべてが結合されます。結合する行数に応じて、必要に応じて99の数を調整できます。 1行だけを結合する場合、gJだけで十分です。

1
LeOn - Han Li

Man 1 edの使用:

# cf. http://wiki.bash-hackers.org/doku.php?id=howto:edit-ed 
ed -s file <<< $'1,$j\n,p'  # print to stdout 
ed -s file <<< $'1,$j\nwq'  # in-place edit
1
carlmund

数字とセミコロンだけを保持したい場合、次のコードは大きなエンコードの問題がないと仮定してトリックを実行する必要がありますが、最後の「改行」も削除されます。

$ tr -cd ";0-9"

上記を簡単に変更して、他の文字を含めることができます。小数点、カンマなどを保持する場合.

1
peak

ファイルの最後にある末尾の改行も削除するには

python -c "s=open('filename','r').read();open('filename', 'w').write(s.replace('\n',''))"
0
crizCraig

POSIXクラス でsedを使用します

これにより、空白(スペースとタブ)のみを含むすべての行が削除されます。

sed '/^[[:space:]]*$/d'

作業しているものは何でも取って、そこにパイプするだけです

cat filename | sed '/^[[:space:]]*$/d'

0
jasonleonhard

特に奇妙なワードラップを修正するためにGUIでこれを行う必要がある場合は、最も明白で速い答えがありません。

  • geditを開きます

  • それから Ctrl + H、次にFindテキストボックス\nReplace withに空のスペースを入れてから、チェックボックスRegular expressionと出来上がりを埋めます。

0

私は通常、ファイルからコードスニペットをコピーし、不要な新しい行を追加せずにコンソールに貼り付けたいときにこのユースケースを取得し、bashエイリアスを作成することになりました
(興味がある場合はonelineと呼びます)

xsel -b -o | tr -d '\n' | tr -s ' ' | xsel -b -i
  • xsel -b -oはクリップボードを読み取ります

  • tr -d '\n'は新しい行を削除します

  • tr -s ' 'は繰り返しスペースを削除します

  • xsel -b -iはこれをクリップボードにプッシュします

その後、クリップボードの新しい内容をコンソールなどの1行に貼り付けます。

0

私はawkでそれをします、例えば.

awk '/[0-9]+/ { a = a $0 ";" } END { print a }' file.txt

(欠点は、aがメモリに「蓄積」されることです)。

編集

Printfを忘れました!だからまた

awk '/[0-9]+/ { printf "%s;", $0 }' file.txt

または、おそらくawkを使用して他のansで既に与えられたもの。

0
ShinTakezou