我有一個簡單的命令(bash腳本的一部分),我通過awk管道,但似乎無法壓制最終的記錄分隔符,然後管道sed。 (是的,我有很多選擇,而我的是sed。)有沒有需要最後一根管的簡單方法?awk:刪除最後一個記錄分隔符在單線程
dolls = $(egrep -o 'alpha|echo|november|sierra|victor|whiskey' /etc/passwd \
| uniq | awk '{IRS="\n"; ORS=","; print}'| sed s/,$//);
沒有sed的,這將產生輸出像echo,sierra,victor,
,我只是想刪除最後一個逗號。
沒有名爲「IRS」的awk變量。有「RS」,默認情況下它是一個換行符,所以如果這是你的意圖,就不需要設置它。此外,uniq的不會檢測重複的條目,除非線是相鄰的,所以你會更好用'排序-u'代替,而egrep的會拉出來的文本是它的字符串的一部分 - 真的是你想要的嗎?告訴我們最終的端到端你想用樣品的輸入和預期的輸出做什麼,我們可以幫助你。 –
'='符號周圍不應該有空格 – doubleDown
感謝關於IRS的說明。我是awk noob的一員,真的只用於管道處理。如果它沒有被忽略,分隔符已經不是\ n,我不得不從錯誤中學習。 :) 我使用'而不是'uniq'排序-u',因爲重複的名稱是從一行來在/ etc/passwd文件:第一個用戶名,然後在主目錄。他們幾乎保證連續。 – Rache