Sed

使用sed在匹配模式的左側插入字元?

  • December 24, 2021

這是作為輸入的數據文件。

1
2
2
979
data
raw
32j
23
32323

輸出:

/* 1
/* 2
/* 2
/* 979
data
raw
/* 32j
/* 23
/* 32323

如何使用 sed 獲得所需的輸出?匹配模式的正則表達式是**^$$ 0-9 $$***.

我猜你想要的是註釋掉以數字開頭的行。這不是什麼^[0-9]*意思,這將匹配所有內容,包括空行或根本沒有數字的行,因為*意味著“0 或更多”,因此它將匹配文件的每一行。

因此,要註釋以數字開頭的行,您可以使用:

$ sed  '/^[0-9]/ s|^|/* |' file 
/* 1
/* 2
/* 2
/* 979
data
raw
/* 32j
/* 23
/* 32323

或者:

$ sed -E 's|^([0-9])|/* \1|' file 
/* 1
/* 2
/* 2
/* 979
data
raw
/* 32j
/* 23
/* 32323

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