f grep -iq "^[=]*TVF report summary[=]*$" $line/summary.rep; then TVFNo=$(awk 'NR==13,NR==22' $line/summary.rep) TVFNo=$(sed "s/[a-zA-Z]//g" <<< $TVFNo) TVFNo=$(sed "s/[=]//g" <<< $TVFNo) TVFNo=$(sed "s/[_]//g" <<< $TVFNo) TVFNo=$(sed "s/[[:space:]]//g" <<< $TVFNo) TVFNo=$(sed "s/[:]//g" <<< $TVFNo) TVFNo=$(sed "s/[/]//g" <<< $TVFNo) TVFNo=$(sed "s/[.]//g" <<< $TVFNo) eval TVFNo$Number=$TVFNo fi 将其中的sed命令写成一个函数,然后再调用这个函数
时间: 2024-04-12 12:28:18 浏览: 378
你可以将 `sed` 命令写成一个函数,然后在需要的地方调用该函数。下面是将 `sed` 命令封装成函数的示例代码:
```shell
# 定义 sed 函数
sanitize_string() {
local string="$1"
string=$(sed "s/[a-zA-Z]//g" <<< "$string")
string=$(sed "s/[=]//g" <<< "$string")
string=$(sed "s/[_]//g" <<< "$string")
string=$(sed "s/[[:space:]]//g" <<< "$string")
string=$(sed "s/[:]//g" <<< "$string")
string=$(sed "s/[/]//g" <<< "$string")
string=$(sed "s/[.]//g" <<< "$string")
echo "$string"
}
# 在需要的地方调用函数
if grep -iq "^[=]*TVF report summary[=]*$" "$line/summary.rep"; then
TVFNo=$(awk 'NR==13,NR==22' "$line/summary.rep")
TVFNo=$(sanitize_string "$TVFNo")
eval "TVFNo$Number=$TVFNo"
fi
```
在上面的代码中,`sanitize_string` 函数接受一个字符串参数,并使用一系列的 `sed` 命令对字符串进行处理。然后,你可以在需要的地方调用该函数,并将需要处理的字符串作为参数传递给它。
请注意,`$line` 和 `$Number` 是你原始代码中使用的变量,这里假设它们已经正确定义和赋值。另外,我还添加了对变量和文件名的引号,以避免可能的空格或特殊字符导致的问题。
阅读全文