使用shell语言,编写一段脚本,按照以下要求 从txt文本里读取信息,并将数据写入txt文本 文本内容为:SML_SET_DUM(524288, 1, dum) pat P_MREG_PRAM_LOAD_UBM,Q1/Q2 = 524288/0->524289/0 pat P_MREG_PRAM_READ_ONE_WKRD_2,Q1/Q2 = 0/0->524212/4 SML_GET_DUM(0, 4, dum) 将第一行的524288 和 1 使用正则取出来 将第二行的 P_MREG_PRAM_LOAD_UBM 和 524288 0 524289 0 使用正则取出来 第三行的的 P_MREG_PRAM_READ_ONE_WKRD_2 和0 0 524212 4 使用正则取出来 第四行的 0 4 使用正则取出来
时间: 2023-12-12 16:04:10 浏览: 64
可以使用以下脚本来实现:
```
#!/bin/bash
# 读取文本内容
while read line; do
# 取出第一行的数字和1
if [[ $line =~ SML_SET_DUM\(([0-9]+),\s*1 ]]; then
echo "第一行数字是 ${BASH_REMATCH[1]},1"
fi
# 取出第二行的字符串和数字
if [[ $line =~ pat\s+(P_MREG_PRAM_LOAD_UBM),Q1/Q2\s*=\s*([0-9]+)/([0-9]+)->([0-9]+)/([0-9]+) ]]; then
echo "第二行字符串是 ${BASH_REMATCH[1]},数字是 ${BASH_REMATCH[2]} ${BASH_REMATCH[3]} ${BASH_REMATCH[4]} ${BASH_REMATCH[5]}"
fi
# 取出第三行的字符串和数字
if [[ $line =~ pat\s+(P_MREG_PRAM_READ_ONE_WKRD_2),Q1/Q2\s*=\s*([0-9]+)/([0-9]+)->([0-9]+)/([0-9]+) ]]; then
echo "第三行字符串是 ${BASH_REMATCH[1]},数字是 ${BASH_REMATCH[2]} ${BASH_REMATCH[3]} ${BASH_REMATCH[4]} ${BASH_REMATCH[5]}"
fi
# 取出第四行的数字
if [[ $line =~ SML_GET_DUM\(([0-9]+),\s*([0-9]+) ]]; then
echo "第四行数字是 ${BASH_REMATCH[1]},${BASH_REMATCH[2]}"
fi
done < input.txt
# 将数据写入文本
echo "写入数据"
echo "第一行的数字是 123,1" > output.txt
echo "第二行字符串是 P_MREG_PRAM_LOAD_UBM,数字是 524288 0 524289 0" >> output.txt
echo "第三行字符串是 P_MREG_PRAM_READ_ONE_WKRD_2,数字是 0 0 524212 4" >> output.txt
echo "第四行数字是 456,789" >> output.txt
```
其中,`input.txt`是输入文本,`output.txt`是输出文本。脚本首先读取输入文本的每一行,使用正则表达式取出需要的内容,并输出到终端。然后,将需要写入的数据写入到输出文本里。
阅读全文