如果我有一個文件中的以下列表:桑達:如何替換找到一個特定的模式位於文件後的字符串
integer, parameter :: ni = 1024
integer, parameter :: nj = 256
integer, parameter :: nk = 16
,並希望基於字符串「NI =」進行搜索,然後用例如'512'的新字符串替換後面的字符串(本例中爲'1024')(我想保留空格)。我該如何使用sed?請注意,我希望基本上擦除等號後的任何內容,這是因爲有時字符串不會是一個簡單的整數,它可能類似於'1.D0'。在某些情況下,可能會有評論。所以我只想消除等號前面的任何內容,並用新值替換。
其結果將是:
integer, parameter :: ni = 512
integer, parameter :: nj = 256
integer, parameter :: nk = 16
編寫'sed -e's/:: ni = [0-9] + $/:: ni = 512 /'' –
@AntonAstafiev更好:這取決於你希望代碼的工作範圍。 'sed'的某些變體支持'+'而不需要進一步的切換;許多人不這樣做,POSIX也不要求他們這樣做。你可以使用'[0-9] \ {1,\}'來做到這一點,但我寫的更容易理解。 –