[英]Is there a way in Shell to substitute a value into the regex pattern?
我正在編寫一個 Python 腳本,將某種格式的 XML 文件轉換為 JSON 格式。 該練習來自麻省理工學院缺失的學期。 ( xml_to_json )
我對如何替換 shell 中的正則表達式模式中的值有疑問。(我正在使用 python 中的子進程庫來訪問 shell sed 程序)
我使用了 Python 庫 'subprocess' 並做了如下操作。
# xml_to_json.py
num = 1001(or it could be other numbers)
subprocess.call(["sed","-E","-i","","${num}s/,$//","example-data.xml"])
我想做的是使用變量“num”,將值替換到這個位置(${num}),這樣我就可以替換到特定的行號。
我知道您可以像這樣使用 shell 中的變量 ($variable) 但它似乎在這里不起作用。
我知道我可以定義一個行號范圍,我想在其中執行“sed”工作,例如“%1,100s/regexpattern/regex/”。
如何使用變量將行號放在“s”前面?
num
不是 shell 變量,而是 python 變量。 只需在 python 中構建您的參數字符串以包含正確的值:
subprocess.call(["sed","-E","-i","", str(num) + "s/,$//","example-data.xml"])
或使用 f 弦:
subprocess.call(["sed","-E","-i","", f'{num}s/,$//',"example-data.xml"])
請注意,不小心將值插入 shell 命令可能會使您容易受到命令注入。 在這種情況下,它似乎是安全的,因為num
是一個簡單的數值,而不是用戶提供的數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.