在一个长文件中,我正在寻找这样的东西:
c 0.5p_f
10 px 2
我需要在'c 0.5p_f'标记之后修改一行的第3列。
它是bash脚本的一部分,它会执行此操作,我想避免使用awk脚本,只使用bash命令。
答案 0 :(得分:2)
为什么不使用awk
?这很完美。
do_modify{$3="modify";do_modify=0}/c 0\.5p_f/{do_modify=1}1
如果您可以使用sed
脚本,
/c 0\.5p_f/{n;s/\([^[:space:]]*[[:space:]]\+[^[:space:]]*[[:space:]]\+\)\S*/\1modify/}
会这样做。不过,纯粹的Bash也不是很难。
do_modify=
while read -r line; do
if [[ -n ${do_modify} ]]; then
columns=(${line})
columns[2]=modified
line=${columns[*]}
do_modify=
fi
printf '%s\n' "${line}"
if [[ ${line} = *'c 0.5p_f'* ]]; then
do_modify=1
fi
done