如何用Linux工具修改文件行:将status:<任意内容>改为status:"red"
如何用Linux工具批量修改文件中的status行?
当然可以搞定这个需求!我推荐用awk命令来处理,这是最简洁高效的方案:
awk 'BEGIN{FS=OFS=":"} $1 ~ /status/ {$2="\"red\""}1' file
命令细节解释:
BEGIN{FS=OFS=":"}:在处理文件前,先把输入和输出的字段分隔符都设置为冒号:,这样能精准拆分status:后面的内容,保证修改后格式完全一致。$1 ~ /status/:匹配所有第一个字段是status的行(如果你的需求是严格匹配无多余空格的status,也可以改成$1 == "status",灵活性更高)。{$2="\"red\""}:把匹配行的第二个字段替换为带双引号的red,这里用\"转义双引号,确保输出内容是"red"而不会被shell解析丢失。1:这是awk的常用小技巧,等价于执行print语句,会输出所有行——不管有没有被修改的行都会保留原样,不会丢失其他内容。
关于修改原文件:
这个命令默认只会把处理结果输出到终端,如果想直接修改原文件,不要直接重定向到原文件(会直接清空原文件),可以先输出到临时文件再替换:
awk 'BEGIN{FS=OFS=":"} $1 ~ /status/ {$2="\"red\""}1' file > temp_file && mv temp_file file
内容的提问来源于stack exchange,提问作者user1679671
相关产品推荐
相关产品推荐

