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

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

改行をカンマ区切りにする | ハックノート
何かの出力結果のデータ整形で使ったり。 ``` cat sometext | tr '\n' ',' | sed -e 's/,$/\n/g' ```

置換方法

元データ: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 ←カンマが消えたことを確認

以上、備忘録。

入門bash 第3版
前版の『入門 bash 第2版』発行から7年が経ち、リビジョン/バージョンアップを繰り返してbashの機能も大きく強化されました。 今ではLinux/Unixユーザーだけでなく、Cygwinを利用するWindowsユーザー、Mac OS Xユーザーもbashを使うようになりました。 第3版の本書では、多くのLinuxデ...

コメント

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