如何抓取引号中的字段



我有一个文本文件,它包含以下行:

"user","password_last_changed","expires_in"
"jeffrey","2021-09-21 12:54:26","90 days"
"root","2021-09-21 11:06:57","0 days"

如何从倒逗号中抓取两个字段jeffrey90 days并保存在变量中。

如果awk是一个选项,您可以保存一个数组,然后将元素保存为单独的变量。

$ IFS=""" read -ra var <<< $(awk -F, '/jeffrey/{ print $1, $NF }' input_file)
$ $ var2="${var[3]}"
$ echo "$var2"
90 days
$ var1="${var[1]}"
$ echo "$var1"
jeffrey
while read -r line; do # read in line by line
name=$(echo $line | awk -F, ' { print $1} ' | sed 's/"//g') # grap first col and strip "
expire=$(echo $line | awk -F, ' { print $3} '| sed 's/"//g') # grap third col and strip "
echo "$name" "$expire" # do your business
done < yourfile.txt
IFS=","
arr=( $(cat txt | head -2 | tail -1  | cut -d, -f 1,3 | tr -d '"') )
echo "${arr[0]}"
echo "${arr[1]}"

结果是一个数组,你可以通过索引访问元素。

也许下面这个方法会帮助你使用sedawk命令

#!/bin/sh
username=$(sed -n '/jeffrey/p' demo.txt | awk -F',' '{print $1}')
echo "$username"
expires_in=$(sed -n '/jeffrey/p' demo.txt | awk -F',' '{print $3}')
echo "$expires_in"

输出:

jeffrey
90 days

注意:以上方法将工作,如果他们只有不同的用户名据我所知,用户名不是重复的

相关内容

  • 没有找到相关文章

最新更新