以下の内容はhttps://takuya-1st.hatenablog.jp/entry/2021/04/27/145424より取得しました。


sed で改行削除/sedで全文(複数行マッチ)

sed で改行を消してCSVにしたい。

コマンドの結果の改行を消してCSVのようなカンマ区切りに変換したい。

他の置換ツールや python / rubyワンライナーに回せばいいと思うけど、sedでできたほうが汎用性が高そう。そのためsedで改行を置換、改行を別の文字に変えてCSVのような文字区切りをやってみる。

sed は行ごとの処理

sed は、「行ごと」で処理するのが基本動作なので、改行にマッチとか、改行を削除することはできない。

grep でもそうなんだけど、行処理が暗黙の前提なものを全体マッチにするときは、ちょっとオプションを見てあげると解決。

全体にマッチする。

マッチする箇所を「全体」に設定してあげるといい。

networksetup  -listallnetworkservices | \grep -v as | sed -z 's/\n/,/g'

-z オプション

-z オプションを使って、複数行に亘るマッチングができる。z は「全文・全体」と覚えれば絶対に忘れない。

bsd sed / gnu sed

macos で試したが、 -z があるのは GNU sed のみ。

macos などのBSDななsedでは、次のように。

sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/ /g'

macの場合は、brewgnu sed ( gsed ) をインストールしてもいいですね。

参考資料

https://orebibou.com/ja/home/201607/20160714_003/




以上の内容はhttps://takuya-1st.hatenablog.jp/entry/2021/04/27/145424より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14