能否扩展Linux输出重定向(>)功能?无需后处理实现自定义输出
直接在输出时添加标识的Shell实现方法
可以用以下几种方式实现,无需额外后处理步骤:
方法一:用read拆分变量后拼接输出
通过read命令将脚本输出的空格分隔值分别赋值给变量,再拼接成目标格式写入文件:
sh script | read a b c d e && echo "value1: $a notation2: $b term3: $c value4: $d number5: $e" > output
read会自动按空格拆分输入内容,把v1到v5分别存到a到e变量中,后续echo命令直接组合成需要的格式并写入文件。
方法二:用awk直接格式化输出
利用awk的格式化输出能力,直接处理脚本的输出内容:
sh script | awk '{printf "value1: %s notation2: %s term3: %s value4: %s number5: %s\n", $1,$2,$3,$4,$5}' > output
awk会把输入的单行内容按空格拆分成字段$1到$5,通过printf按指定模板输出,直接写入目标文件。
方法三:修改原脚本输出格式(如果允许)
如果有权限修改原脚本,直接在脚本内部输出时就带上标识:
假设原脚本最后是用echo "$v1 $v2 $v3 $v4 $v5"输出,改成:
echo "value1: $v1 notation2: $v2 term3: $v3 value4: $v4 number5: $v5"
之后直接执行sh script > output就能得到符合要求的结果,这是最直接高效的方式。
内容的提问来源于stack exchange,提问作者malocho
相关产品推荐
相关产品推荐

