1
/usr/bin/sed 's/,/\\n/g' comma-delimited.txt > newline-separated.txt

これは私にはうまくいきません。「、」を削除しただけですが、トークンが区切られていません。

4

4 に答える 4

4

古いバージョンの sed が必要なので、置換にリテラル LF 文字を入れる必要があります。

/usr/bin/sed 's/,/
/g' comma-delimited.txt > newline-separated.txt

LF をエスケープする必要があるかもしれないので、最後の文字 '\' の後に空白文字がないことを確認してください。

/usr/bin/sed 's/,/\
/g' comma-delimited.txt > newline-separated.txt

これが役立つことを願っています。

于 2012-06-22T14:34:26.430 に答える
1

これはあなたのために働くかもしれません:

echo a,b,c,d,e | sed 'G;:a;s/,\(.*\(.\)\)/\2\1/;ta;s/.$//'
a
b
c
d
e

説明:

  • パターン スペースに改行を追加します。G
  • をパターンスペース,の最後の文字に置き換えます。つまり、\n :a;s/,\(.*\(.\)\)/\2\1/;ta
  • 改行を削除します。s/.$//
于 2012-06-22T15:58:47.980 に答える
0

私は次のことを試しましたが、不器用に見えますが、うまくいきます。わかりやすい。tr を使用して、プレースホルダー § の置換を行います。唯一の注意点は、プレースホルダーです。文字列に含まれていないものでなければなりません。

ps -fu $USER | grep java | grep DML| sed -e "s/ -/§      -/g" | tr "§" "\n"

コマンドラインのインデントされた出力が得られます。DML は単なるサーバー名です。

于 2016-02-10T11:20:49.863 に答える
-1

AIX7 では、回答 #3 はうまくいきました。段落の先頭に改行を挿入する必要があるため、grep -p を実行して、結果の「スタンザ」で「mksysb」をフィルタリングできます。/usr/bin/sed 's/^[a-zA-Z/\^J&/' (実際には、最初の行にはエスケープされた改行がありました: lsnim -l | /usr/bin/sed 's/^[a-zA -Z/\ &/') コマンドを思い出すと、^J 構文が表示されました ...

于 2015-09-04T16:54:28.237 に答える