我有一個文件說tmp.txt下面。sed匹配字符串的一部分,但只修改某些部分(或awk,如果這可能更簡單)
root:cDJZp9SHD2KhVgc:0:0:99999:7:::
bin:*:12821:0:99999:7:::
daemon:*:12811:0:99999:7:::
adm:*:12811:0:99999:7:::
lp:*:12811:0:99999:7:::
我想改變'999999'的第一個出現,只在第一行0。可能是這個文件已被修改,所以第一行如下所示。
root:cDJZp9SHD2KhVgc:999999:0:99999:7:::
所以我想匹配沿'root:\w:0'
線的東西,只有修改爲0。有沒有辦法爲一個字符串的這一部分匹配,並指示一定的部分(在這種情況下,0) ,只能用sed修改?或者有沒有更好的方法來用awk做到這一點?
感謝的快速反應@karakfa。你能解釋一下-r選項的作用嗎?文檔只是說「在腳本中使用擴展的正則表達式」。正則表達式的 –
,即分組和'\ 1' – karakfa