gpt4 book ai didi

linux - 如何从包含特定字符串模式的行中提取第一个参数

转载 作者:太空宇宙 更新时间:2023-11-04 04:50:42 24 4
gpt4 key购买 nike

我有一个名为mail_status.txt的文件,该文件的内容如下。

1~auth_flag~
2~download_flag~
3~copy_flag~
4~auth_flag~
5~auth_flag~
6~copy_flag~

我想对此文件执行一些操作,以便最后我应该得到三个变量,它们各自的值应如下:

auth_flag_ids="1,4,5"
download_flag_ids="2"
copy_flag_ids="3,6"

我对这种语言很陌生。如果需要更多详细信息,请告诉我。

谢谢

最佳答案

如果你想根据文件内容生成bash变量,请尝试以下操作:

# read the file and extract information line by line
declare -A hash # delcare hash as an associative array
while IFS= read -r line; do
key="${line#*~}" # convert "1~auth_flag~" to "auth_flag~"
key="${key%~*}_ids" # convert "auth_flag~" to "auth_flag_ids"
hash[$key]+="${line%%~*}," # append the value to the hash
done < "mail_status.txt"

# iterate over the hash to create variables
for r in "${!hash[@]}"; do # r is assigned to "auth_flag_ids", "download_flag_ids" and "copy_flag_ids" in tern
printf -v "$r" "%s" "${hash[$r]%,}" # create a variable named "$r" and assign it to the hash value by trimming the trailing comma off
done

# check the result
printf "%s=\"%s\"\n" "auth_flag_ids" "$auth_flag_ids"
printf "%s=\"%s\"\n" "download_flag_ids" "$download_flag_ids"
printf "%s=\"%s\"\n" "copy_flag_ids" "$copy_flag_ids"
  • 首先读取文件行并提取变量名称以及逐行的值。它们存储在关联数组哈希中。
  • 接下来,它会迭代hash的键来创建名称为的变量“auth_flag_ids”、“download_flag_ids”和“copy_flag_ids”。
  • printf -v var 创建一个变量var。该机制有助于引起间接引用变量。

我不会详细解释 bash 的特定符号例如 ${parameter#word}${parameter%%word}${!name[@]}。您可以轻松找到引用资料和解释良好的文档,包括bash 手册页。

希望这有帮助。

关于linux - 如何从包含特定字符串模式的行中提取第一个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58632719/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com