如何在Shell脚本中移除行首的双引号
用Shell脚本处理文本:调整行号并移除变量名的双引号
针对给定的输入文本,要实现行号格式转换并移除变量名外侧的双引号,可以用以下几种Shell工具完成:
方法一:使用sed命令
sed是文本替换的常用工具,这条命令可一步实现需求:
sed -E 's/Line([0-9]+)[ :]+\"([^\"]+)\"=/\1: \2=/' input.txt
命令说明:
Line([0-9]+):匹配行首的Line加数字序列,把数字部分捕获为第一个分组[ :]+:匹配LineX后的空格或冒号(兼容多个空格/冒号的情况)\"([^\"]+)\"=:匹配变量名外侧的双引号,把变量名内容捕获为第二个分组\1: \2=:将匹配内容替换为「分组1的数字+冒号空格+分组2的变量名+等号」
如果需要直接修改原文件(覆盖原内容),添加-i参数即可(macOS系统需用sed -i '' -E ...):
sed -i -E 's/Line([0-9]+)[ :]+\"([^\"]+)\"=/\1: \2=/' input.txt
方法二:使用awk命令
awk适合复杂的文本拆分处理,命令如下:
awk '{ # 移除行首的Line字符串 sub(/Line/, "", $1) # 拆分第一个字段,提取数字部分 split($1, num_parts, /[ :]/) # 移除第二个字段的首尾双引号,拼接输出 var_name = substr($2, 2, length($2)-2) printf "%d: %s=%s\n", num_parts[1], var_name, $3 }' input.txt
内容的提问来源于stack exchange,提问作者Rock
相关产品推荐
相关产品推荐

