GNU/Linux >> Linux の 問題 >  >> Linux

Linuxで複数の行を1つのファイルに結合する方法

Linuxファイル管理に関する今日のチュートリアルでは、ファイル内の複数の行を1行に結合するための有効なアプローチを見ていきます。この記事の終わりまでに、Linuxファイル管理エクスペリエンスにいくつかのコンピューティングマイルストーンを追加することになります。

[あなたも好きかもしれません:Linuxで2つのテキストファイルを結合する方法]

コマンドラインインターフェイスを介してLinuxオペレーティングシステムを悪用するユーザーの可能性/機会は無限にあります。そのような可能性の1つは、一連のLinuxコマンドを介して複数行のファイルを1行のファイルに操作することです。このような行をマージする目的は、ターゲットファイルにカスタム区切り文字を追加する必要があるのと同じくらい簡単です。

問題の説明

このチュートリアルでは、ターゲットファイルの複数行を1行にマージすることに焦点を当てているため、参照用にそのような種類のファイルを作成し、複数行のデータを入力する必要があります。

$ sudo nano sample_file.txt

上記のスクリーンキャプチャに従って、ファイル( sample_file.txt )を処理しています。 )6行で、これらの6行を結合する方法は3つあります。

  1. 区切り文字なし: I GenuinelyLoveLinuxShellTipsTutorials!
  2. 1文字の区切り文字付き: I Genuinely、Love、Linux.Shell、Tips、Tutorials!
  3. 複数の文字の区切り文字を使用: I Genuinely; Love; Linux; Shell; Tips; Tutorials!

ファイル内の複数の行を1つの行に結合する方法

Linuxでファイル内の複数の行を1つの行に結合するためのこれらの3つのアプローチを見てみましょう。

1。 sedコマンドの使用

sedの力 テキスト処理コマンドラインユーティリティを使用すると、ほぼ同じコード構文を参照して上記の3つのアプローチに対処することで、サンプルテキストファイルの6行を結合できます。

区切り文字なし:

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

間隔あり:

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

単一文字の区切り文字を使用する例:カンマ:

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

複数文字の区切り文字を使用する例:セミコロンと空白:

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

2。 awkコマンドの使用

Linuxのawk コマンドは、もう1つの信頼できるテキスト処理コマンドラインツールです。マルチラインからシングルラインの問題を解決するためのアプローチは、次の方法で分析および実装できます。

区切り文字なし:

$ awk -v d="" '{s=(NR==1?s:s d)$0}END{print s}' sample_file.txt

間隔あり:

$ awk -v d="" '{s=(NR==1?s:s d)$0}END{print s}' sample_file.txt

単一文字の区切り文字を使用する例:カンマ:

$ awk -v d="," '{s=(NR==1?s:s d)$0}END{print s}' sample_file.txt

複数文字の区切り文字を使用する例:セミコロンと空白:

$ awk -v d="; " '{s=(NR==1?s:s d)$0}END{print s}' sample_file.txt

3。貼り付けコマンドの使用

貼り付け コマンドは、区切り文字なし、間隔あり、および単一文字の区切り文字を使用して複数の行を結合する場合にのみ理想的です。このユーティリティはGNUCoreutilsの下にあります したがって、パッケージはすべてのLinuxOSディストリビューションで利用できます。

区切り文字なし:

$ paste -sd '' sample_file.txt

間隔あり:

$ paste -sd '' sample_file.txt

単一文字の区切り文字を使用する例:アンダースコア:

$ paste -sd '_' sample_file.txt

末尾の下線(_) 貼り付けコマンドをsedコマンドにパイプすることで削除できます:

$ paste -sd '_' sample_file.txt | sed 's/_$/\n/'

このアプローチは、次のような不規則な出力のため、セミコロンや空白などの複数の文字の区切り文字では理想的ではありません。

$ paste -sd '; ' sample_file.txt

4。 trコマンドの使用

trコマンド 区切り文字なし、間隔あり、単一文字の区切り文字で複数の行を結合する場合にも理想的です。

区切り文字なし:

$ tr -d '\n' < sample_file.txt

間隔あり:

$ tr '\n' ' ' < sample_file.txt

単一文字の区切り文字を使用する例:カンマ:

$ tr '\n' ',' < sample_file.txt	

出力をsedコマンドにパイプして、余分なコンマを取り除きます。

$ tr '\n' ',' < sample_file.txt | sed 's/,,$/\n/'

Linuxでファイル内の複数の行を1つの行に結合する方法を正常に学習しました。


Linux
  1. UNIX/Linux でファイルの行数を数える方法

  2. 複数行をカンマ区切りの 1 行にする

  3. 1 つのテキスト ファイルを複数の *.txt ファイルに分割する方法は?

  1. ファイルに複数の行を追加するにはどうすればよいですか?

  2. 複数行のファイル名をカスタム区切り文字で 1 つに結合する方法は?

  3. Linux 設定ファイルの複数行をコメントアウトするには?

  1. 複数のファイルの内容を 1 つのファイルに追加する方法

  2. 複数のファイルを1つのgzファイルにgzipする方法は?

  3. Linux - 1 つのファイル内で複数のファイル システムをフォーマットする方法は?