別の行を引用符で囲まれた項目を含むカンマ区切りリストに変換

別の行を引用符で囲まれた項目を含むカンマ区切りリストに変換

インストールのためにRに渡すことができるリストに変換したいデータ(Rmarkdownファイルから解析されたRパッケージのリスト)があります。

d3heatmap
data.table
ggplot2
htmltools
htmlwidgets
metricsgraphics
networkD3
plotly
reshape2
scales
stringr

リストを次の形式のリストに置き換えたいと思います。

'd3heatmap', 'data.table', 'ggplot2', 'htmltools', 'htmlwidgets', 'metricsgraphics', 'networkD3', 'plotly', 'reshape2', 'scales', 'stringr'

現在、ソースファイルから上記のリストまでのbashパイプラインがあります。

grep 'library(' Presentation.Rmd \
| grep -v '#' \
| cut -f2 -d\( \
| tr -d ')'  \
| sort | uniq

新しい行をカンマ区切りリストに変換する手順を追加したいと思います。追加しようとしましたがtr '\n' '","'失敗しました。また、次のスタックオーバーフローの答えのいくつかを試しましたが、失敗しました。

これは結果をもたらしましたlibrary(stringr)))phics)

これは結果をもたらしました,%

この答え(-iフラグの削除)は入力と同じ出力を生成します。

ベストアンサー1

引用符を追加できます。sed次に、行を次と比較します。生地、そう:

sed 's/^\|$/"/g'|paste -sd, -

GNU coreutilsベースのシステム(Linuxなど)を実行している場合は末尾'-'

入力したデータにDOSスタイルの行末(@ phk提案)がある場合は、次のようにコマンドを変更できます。

sed 's/\r//;s/^\|$/"/g'|paste -sd, -

おすすめ記事