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