我對 Linux 命令有點陌生。最近我得到了一個大檔案的字串(4GB)檔案格式看起來像這樣。
1,2,http://*.example.org/
1,3,https://*.example.org/
1,4,https://*.example.org/*
1,5,https://example.org/*example
我想查找并替換僅在行首的每個星號。我想要的結果,例如:
1,2,http://replaced.example.org/
1,3,https://replaced.example.org/
1,4,https://replaced.example.org/*
1,5,https://example.org/*example
我所嘗試的將取代每一次出現。無論如何我可以做些什么來得到上面的結果?
sed 's/*/replaced/' inputfile > outputfile
uj5u.com熱心網友回復:
您可以替換://*.為://replaced.使用
sed 's~://\*\.~://replaced.~' file > newfile
這里,
~用作正則運算式分隔符以避免轉義/字符://\*\.是一個 POSIX BRE 模式匹配://*.子字串(作為特殊字符*,.它們被轉義)
請注意,要匹配字串開頭的星號,您只需要^錨點。因此,要匹配并替換 a*在您將使用的字串的開頭
sed 's/^\*/replaced/' file > newfile
但是,您的任何示例文本都沒有在任何行的開頭包含星號。
如果您計劃在字串中的特定位置匹配和替換星號,您可以捕獲所需長度的子字串并替換為對組值和替換文本的反向參考。例如:
sed 's~^\(.\{11\}\)\*~\1replaced~' file > newfile
僅當它是字串中的第 12 個字符時才會替換*(就像字串的情況一樣1,2,http://*.example.org/)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/426446.html
上一篇:從sqlplus獲取oracle偵聽器狀態輸出,無論偵聽器名稱是什么
下一篇:如何與awk進行嚴格匹配
