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

sed を使用して区切り文字で文字列を分割する

GNU sed で区切り文字を使用して文字列を分割するには、次のように言います:

sed 's/delimiter/\n/g'     # GNU sed

たとえば、: を使用して分割するには 区切り文字として:

$ sed 's/:/\n/g' <<< "he:llo:you"
he
llo
you

または非 GNU sed:

$ sed $'s/:/\\\n/g' <<< "he:llo:you"
he
llo
you

この特定のケースでは、g を見逃しています。 置換後。したがって、それは一度だけ行われます。参照:

$ echo "string1:string2:string3:string4:string5" | sed s/:/\\n/g
string1
string2
string3
string4
string5

g g の略 ローバルであり、置換をグローバルに、つまりすべてのオカレンスに対して行う必要があることを意味します。デフォルトは 1 であり、たとえば 2 を指定すると、2 回実行されることを確認してください。

まとめて、あなたの場合は以下を使用する必要があります:

sed 's/:/\\n/g' ~/Desktop/myfile.txt

sed ... file を直接使用できることに注意してください 不要なパイピングの代わりに構文:cat file | sed .


\n の使用 sedで ポータブルではありません。 sed でやりたいことを実現するポータブルな方法 です:

sed 's/:/\
/g' ~/Desktop/myfile.txt

しかし実際には、これは sed の仕事ではありません とにかく、それは仕事です tr 次の目的で作成されました:

tr ':' '
' < ~/Desktop/myfile.txt

Linux
  1. Sedコマンドで一度に複数のパターンを使用する

  2. ファイル内の文字列を置き換える方法は?

  3. Notify-Send With Cronを使用していますか?

  1. 「sed」を追加しますか?

  2. 文字列をSedのスラッシュを含む文字列に置き換える方法は?

  3. SedですべてのCコメントを削除しますか?

  1. Sedを使用して文字列の最初の文字をラップしますか?

  2. ヌル文字列を使用して個々の文字を分割しますか?

  3. 辞書を使用した文字列の置換?