xargsに改行文字を追加する方法

xargsに改行文字を追加する方法

Linuxオペレーティングシステム(kali)のすべてのライセンスをキャプチャし、それを正しいパッケージに関連付けるコマンドを作成しようとしています。デフォルトのアイデアは、/usr/share/docで「著作権」ファイルを繰り返し検索し、それを検索して「^License」先行ライセンスを検索することです。各パッケージは複数のものを持つことができます。

すべてのパッケージ名を取得し、ライセンスごとにコンマで区切って、各行の最初のフィールドに入れるCSVを作成しようとしています。

マイプロセス:各パッケージを一覧表示します(完了)。各行が見つかったライセンスのCSVであるリストを作成します。次に、ファイル1とファイル2を貼り付けるだけです。

問題はコマンド出力の改行をコンマで置き換える必要がありますが、csvライセンスがパッケージリストと一致するようにxargsの各反復の末尾に改行を再挿入する必要があります。私は何十もの方法を試しました。コマンド置換を実行すると、翻訳やエコーが中断されます(改行\n文字として読み込まれなくなりました。試してみましたが、運がありませ\\nんでした)。

これが私が持っているものです。 xargs サイクルごとに改行文字を入れる方法が必要です。

find . -name copyright |xargs -l cat |grep "^License" |tr '\n' ',' 

したがって、各 xarg ループの後に挿入される項目にパイプできれば、\n操作は完了です。私は変数を使ってこれに対するforループを書くことができることを知っています。

答え1

awkに問題がない場合は、次の回避策を試してください。

find $PWD -name copyright | xargs awk 'BEGIN{ORS=","} FNR==1{print "\n"FILENAME}; $0 ~ /^License/ {print $0}' | sed 's/,$//g'  |awk -F',' 'NF>1'

関連情報