如何在引号中抓取字段
How to grab fields in inverted commas
我有一个包含以下行的文本文件:
"user","password_last_changed","expires_in"
"jeffrey","2021-09-21 12:54:26","90 days"
"root","2021-09-21 11:06:57","0 days"
如何从引号中获取两个字段 jeffrey
和 90 days
并保存在变量中。
IFS=","
arr=( $(cat txt | head -2 | tail -1 | cut -d, -f 1,3 | tr -d '"') )
echo "${arr[0]}"
echo "${arr[1]}"
结果是一个数组,可以通过索引访问其中的元素。
while read -r line; do # read in line by line
name=$(echo $line | awk -F, ' { print } ' | sed 's/"//g') # grap first col and strip "
expire=$(echo $line | awk -F, ' { print } '| sed 's/"//g') # grap third col and strip "
echo "$name" "$expire" # do your business
done < yourfile.txt
如果 awk
是一个选项,您可以保存一个数组,然后将元素保存为单独的变量。
$ IFS="\"" read -ra var <<< $(awk -F, '/jeffrey/{ print , $NF }' input_file)
$ $ var2="${var[3]}"
$ echo "$var2"
90 days
$ var1="${var[1]}"
$ echo "$var1"
jeffrey
下面的方法可能会帮助您使用
sed
和 awk
命令
#!/bin/sh
username=$(sed -n '/jeffrey/p' demo.txt | awk -F',' '{print }')
echo "$username"
expires_in=$(sed -n '/jeffrey/p' demo.txt | awk -F',' '{print }')
echo "$expires_in"
输出:
jeffrey
90 days
注:
如果他们只有不同的用户名,上述方法将起作用
据我所知用户名没有重复
我有一个包含以下行的文本文件:
"user","password_last_changed","expires_in"
"jeffrey","2021-09-21 12:54:26","90 days"
"root","2021-09-21 11:06:57","0 days"
如何从引号中获取两个字段 jeffrey
和 90 days
并保存在变量中。
IFS=","
arr=( $(cat txt | head -2 | tail -1 | cut -d, -f 1,3 | tr -d '"') )
echo "${arr[0]}"
echo "${arr[1]}"
结果是一个数组,可以通过索引访问其中的元素。
while read -r line; do # read in line by line
name=$(echo $line | awk -F, ' { print } ' | sed 's/"//g') # grap first col and strip "
expire=$(echo $line | awk -F, ' { print } '| sed 's/"//g') # grap third col and strip "
echo "$name" "$expire" # do your business
done < yourfile.txt
如果 awk
是一个选项,您可以保存一个数组,然后将元素保存为单独的变量。
$ IFS="\"" read -ra var <<< $(awk -F, '/jeffrey/{ print , $NF }' input_file)
$ $ var2="${var[3]}"
$ echo "$var2"
90 days
$ var1="${var[1]}"
$ echo "$var1"
jeffrey
下面的方法可能会帮助您使用
sed
和 awk
命令
#!/bin/sh
username=$(sed -n '/jeffrey/p' demo.txt | awk -F',' '{print }')
echo "$username"
expires_in=$(sed -n '/jeffrey/p' demo.txt | awk -F',' '{print }')
echo "$expires_in"
输出:
jeffrey
90 days
注: 如果他们只有不同的用户名,上述方法将起作用 据我所知用户名没有重复