$variable
スペースで区切られた多くの二重引用符付きのパスがあります。
echo $variable
"/home/myuser/example of name with spaces" "/home/myuser/another example with spaces/myfile"
私の変数のパスの数は変えることができ、制御されません。たとえば、次の例のようになります。
example 1: "path1" "path2" "path3" "path4"
example 2: "path1" "path2" "path3" "path4" "path5" "path6" path7" "path8"
example 3: "path1" "path2" "path3"
example 4: "path1" "path2" "path3" "path4" "path5" "path6"
\n
二重引用符内のスペースを維持しながら、二重引用符の外側のすべてのスペースを新しい行()に置き換えたいと思います。echo $variable | tr " " "\n"
次のようなものを使用してくださいこれ答えはすべてのスペースを新しい行に置き換えるので、私には適していません。どうすればいいですか?
答え1
要素が次の場合いつも二重引用符の場合、quote-space-quoteをquote-newline-quoteに置き換えることができます。
$ sed 's/" "/"\n"/g' <<< "$variable"
"/home/myuser/example of name with spaces"
"/home/myuser/another example with spaces/myfile"
または(シェルパラメータ置換を使用)
$ printf '%s\n' "${variable//\" \"/\"$'\n'\"}"
"/home/myuser/example of name with spaces"
"/home/myuser/another example with spaces/myfile"
ただし、配列を使用するようにスクリプトを変更できる場合は、はるかに簡単です。
$ vararray=("/home/myuser/example of name with spaces" "/home/myuser/another example with spaces/myfile")
$ printf '"%s"\n' "${vararray[@]}"
"/home/myuser/example of name with spaces"
"/home/myuser/another example with spaces/myfile"