テキストファイルにスペースを改行/入力で置き換える方法は?


18

「example」という名前の簡単なテキストファイルがあります。

端末コマンドを使用した読み取り: cat example

出力:

abc cdef ghi jk lmnopq rst uv wxyz

次の形式に変換(変換)したい:(からの期待される出力cat example

abc
cdef
ghi
jk
lmnopq
rst
uv
wxyz

コマンドライン経由でこれを行うにはどうすればよいですか?

(これは単なるサンプルファイルです。垂直列の単語の位置を変換したいです)


回答:


37

いくつかの選択肢:

  1. クラシック、使用tr

    tr ' ' '\n' < example
    
  2. 使用する cut

    cut -d ' ' --output-delimiter=$'\n' -f 1- example
    
  3. 使用する sed

    sed 's/ /\n/g' example
    
  4. 使用する perl

    perl -pe 's/ /\n/g' example
    
  5. シェルを使用する

    foo=$(cat example); echo -e ${foo// /\\n}
    

以下の場合sedの例私は追加する必要が$すなわち、実際の改行で置き換えるためのbashを取得するには:sed $'s/ /\\\n/g' example
acumartini

上記のOSX sed、gnu-sedの例:sed $'s/ /\\n/g'
acumartini

16

以下のコマンドを試してください

awk -v RS=" " '{print}' file

または

awk -v RS='[\n ]' '{print}' file

例:

$ awk -v RS=" " '{print}' example
abc
cdef
ghi
jk
lmnopq
rst
uv
wxyz

説明:

RS(レコードセパレーター)は組み込みのawk変数です。最初のコマンドでは、Record separator変数に指定された値はスペースです。そのため、awkはスペースを見つけるたびに行の印刷を中断します。

2番目のコマンドでは、RS変数に指定された値はスペースまたは改行文字です。このコマンドは、最初のコマンドの実行中に表示される余分な空白行を削除します。


8

あなたは使用することができxargs

cat example | xargs -n 1

または、より良い

xargs -n 1 < example

6
xargs -n 1 < exampleあなたは1匹の子猫節約
Rinzwind


1

誰もpythonを投稿していないので、ここにそれがあります:

python -c "import sys;lines=['\n'.join(l.strip().split()) for l in sys.stdin.readlines()];print('\n'.join(lines))" < input.txt 

入力ファイルをpythonのstdinストリームにリダイレクトし、1行ずつ読み取ります。各行の末尾の改行は削除され、単語に分割され、各単語が改行で区切られた1つの文字列に再結合されます。お互い。最終的には文字列のリストになり、それが再びより大きな文字列に結合され、stdoutストリームに出力されます。後でリダイレクトで別のファイルに> out.txt リダイレクトできます。


0

上記の「tr」と似ていますが、追加されています。

  • タブでも機能します

  • 複数のスペースまたはタブを1つの改行に変換します

    tr -s '[:space:]' '\n' < example
    
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.