With ed
如果可用/可接受。
#!/usr/bin/env bash
if [[ "$userEntry" == "part2" ]]; then
printf '%s\n' '40,50s/^[[:blank:]]*#//' '28,38s/^/#/' ,p Q |
ed -s file.txt
fi
只会将新输出打印到stdout
但该文件不会被更改/编辑。改变Q
to w
if in-place需要编辑。去除,p
使输出静音。
With sed
sed '40,50s/^[[:blank:]]*#//;28,38s/^/#/' file.txt
注意不同sed
使用时版本有不同的语法-i
标记如果in-place需要编辑。
根据OP的解释。
#!/usr/bin/env bash
part1=28
part2=40
if [[ "$userEntry" == "part2" ]]; then
if [[ $(grep -nm1 \# file.txt | cut -d':' -f1) == "$part2" ]]; then
sed '40,50s/^[[:blank:]]*#*//;28,38s/^/#/' file.txt
else
sed '28,38s/^/#/' file.txt
fi
elif [[ "$userEntry" == "part1" ]]; then
if [[ $(grep -nm1 \# file.txt | cut -d':' -f1) == "$part1" ]]; then
sed '28,38s/^[[:blank:]]*#*//;40,50s/^/#/' file.txt
else
sed '40,50s/^/#/' file.txt
fi
fi
需要 GNUgrep(1)