您好,我正在尋找有關如何使用 sed 格式化檔案的幫助。
我有一個生成的檔案,看起來像這樣:
projectA
[email protected]
[email protected]
[email protected]
TestB
[email protected]
[email protected]
ProjectC
[email protected]
我正在使用 sed 來格式化,但我知道有一種更簡單的方法來解決這個問題,而不是運行幾個 sed 命令。
我希望格式在作業表中看起來像這樣:
ProjectID1 | Email1 | Email2 | ...
ProjectID2 | Email1 | Email2 | Email3 | ...
ProjectID3 | Email1 | ...
uj5u.com熱心網友回復:
我將AWK按照以下方式使用 GNU完成此任務,讓file.txt內容成為
projectA
[email protected]
[email protected]
[email protected]
TestB
[email protected]
[email protected]
ProjectC
[email protected]
然后
awk 'NR>1{printf /@/?" | ":"\n"}{printf $0}' file.txt
輸出
projectA | [email protected] | [email protected] | [email protected]
TestB | [email protected] | [email protected]
ProjectC | [email protected]
假設:@任何地方的每一行都是電子郵件,其他每一行都是專案 ID。
說明:我使用printf它,因為它不會在結尾處添加換行符。所有,但第一行之前,我printf要么|或換行(\n這取決于它是否是郵件行或其他行),我使用三元運算子(條件?valueiftrue :valueiffalse)取決于如果行有選擇@與否。對于每一行我printf它。注意:我的代碼生成的輸出沒有尾隨換行符,如果您確實需要,則END{print ""}在{printf $0}.
(在 gawk 4.2.1 中測驗)
uj5u.com熱心網友回復:
這可能對你有用(GNU sed):
sed -E ':a;N;s/\n(.*@)/ | \1/;ta;P;D' file
收集行,將不是電子郵件地址的行和電子郵件地址的行之間的換行符替換為|.
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/358690.html
