Xargs

如何在 xargs 中添加換行符

  • October 10, 2018

我正在嘗試編寫一個命令來擷取 linux OS (kali) 中的每個許可證並將其與正確的包相關聯。基本思想是遞歸地搜尋 /usr/share/doc 以查找“版權”文件,然後搜尋該文件並蒐索主要許可證“^License”。每個包裹可以有多個。

我正在嘗試創建一個 csv,它採用所有包名稱並將它們放在每行的第一個欄位中,然後用每個許可證逗號分隔。

我的基本流程:列出每個包(完成)。製作一個列表,其中每行是找到的許可證的 csv。然後只需粘貼文件 1 和文件 2,boom。

問題,我必須用逗號交換命令輸出中的換行符,但是我需要在每次 xargs 迭代的末尾重新插入換行符,以便我的 csv 許可證將與包列表對齊。我已經嘗試了幾十種方法。當我進行命令替換時,它會中斷翻譯或回顯(不再讀\n作換行符。我試過了\\n,沒有運氣)。

這就是我所擁有的,只需要一種在每個 xargs 循環中放置換行符的方法。

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

因此,如果我可以\n在每個 xarg 循環之後插入一些東西,我就完成了。我知道我可以用變數為此編寫一個 for 循環。

如果您對 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'

引用自:https://unix.stackexchange.com/questions/469698