sedとtrで改行をカンマ(,)に置換

以下を参考に実施。そうかーsedだけだとあかんのかー。

改行をカンマ区切りにする | クロジカ
何かの出力結果のデータ整形で使ったり。 ``` cat sometext | tr '\n' ',' | se

置換方法

元データ:hoge.txt

以下の文言の改行をカンマにしたかった。

TITLE: bashのシェルスクリプト内でオプションを解析する
PATH: 5457403.html

コマンド

以下のコマンドで対応可能。sedじゃなくてtrで置換するわけですな。

% cat hoge.txt |  tr '\n' ',' |  sed -e 's/,$/\n/g'

TITLE: bashのシェルスクリプト内でオプションを解析する,PATH: 5457403.html

ほんならsedいらんやん、とならず、trが必要だった理由

trで改行すると、最終行の暗黙の改行まで置換されるため、sedで末尾のカンマを改行に再置換している。

面倒くさい。。。。

% cat hoge.txt |  tr '\n' ','
TITLE: bashのシェルスクリプト内でオプションを解析する,PATH: 5457403.html,←末尾に余分なカンマが生成される

生成された末尾のカンマを正規表現[,$]で改行に置換
% cat hoge.txt |  tr '\n' ',' |  sed -e 's/,$/\n/g'
TITLE: bashのシェルスクリプト内でオプションを解析する,PATH: 5457403.html ←カンマが消えたことを確認

以上、備忘録。

Amazon.co.jp

コメント

タイトルとURLをコピーしました