例如在linux环境中,有一个文本1.txt,内容如下
aaaaa bbbbb "(3 1) xxxxxxxxx
aaaaa bbbbb "(5 1) xxxxxxxxx
aaaaa bbbbb "(6 1) xxxxxxxxx
aaaaa bbbbb "(7 1) xxxxxxxxx
现在需要把文件中括号内第一个数字大于5的全部加1,并且输出文件,并且这种文件很多的时候,手动改就很费时费力,这种时候,就得利用脚本去实现了,shell脚本其实不是很熟悉,这里记录下:
inputfilte="1.txt"
tempfile="2.txt"
while IFS= read -r line; do
if [[ $line == *"hello world"* ]]; then
x=$(echo "$line" | grep -oP '(?<=aaaaa bbbbb \"\()\d(?= \d)')
if ((x > 2)); then
new_x=$((x + 1))
line=$(echo "$line" | sed "s|aaaaa bbbbb \"($x|aaaaa bbbbb \"($new_x|")
fi
fi
echo "$line"
done < "$inputfilte" > "$tempfile"
mv "$tempfile" "$inputfilte"
代码中有几个地方需要注意: