我有一个日志,我想在正则表达式匹配文本中应用替换。
例如,使用这个日志行:
date machine text random text and yet more random text - status code
我想在文本区域内用 _ 替换所有空格,而不替换日志中的所有其他空格。输出将是这样的:
date machine text_random_text_and_yet_more_random_text - status code
为了匹配我要替换的区域,我有这个正则表达式:
/machine \(.*\) - /
由于文本不标准,我可以有一个空格到20,所以很难直接匹配它,所以我匹配子字符串的开始和结束。
尝试使用它我试过这个:
sed `/machine \(.*\) - / s/ /_/g ' logfile
但当然,它将替换日志中的所有空格,而不仅仅是匹配的子字符串。
我设法用 awk 做到这一点,通过迭代和打印每个字段,直到我找到 . machine
,OFS="_"
当我找到-
. 它有效......但是,我很好奇这是否可以使用 sed 解决。
谢谢