我有一个配置文件,其中每一行的格式为UniqueOption = SomeValue
:
$ cat somefile
option1sub1 = yes
option1sub2 = 1234
...
option1subn = xxxx
option2 = 2345
option3 = no
...
我想在循环中处理“option1”的每个值。但是,sed
或grep
一次性给我所有选项1。
我如何使用sed
或grep
实现这一目标,一次获得一个option1行?
答案 0 :(得分:0)
将grep
的输出传递给while
循环:
grep 'option1' somefile | while read line
do
echo "single option is in var $line"
done
答案 1 :(得分:0)
解决方案1: 关注awk
可能会帮助您获取option1
字符串的最后一个值。
awk -F" = " '/^option1/{print $NF}' Input_file
解决方案第二: 以上将打印字符串option1
的所有值,以防您只需要字符串option1
的第一个值,然后使用以下
awk -F" = " '/^option1/{print $NF;exit}' Input_file
答案 2 :(得分:0)
以下内容将解析文件option1
中file.conf
的所有子选项,并将其保存在bash
数组中。然后可以从该阵列轻松访问这些选项。
#!/bin/bash
while IFS= read -r data; do
opt1+=( "$data" )
done < <( awk -F ' *= *' '$1 ~ /^option1/ { print $2 }' file.conf )
printf 'Option 1, sub-option 1 is "%s"\n' "${opt1[0]}"
输出:
Option 1, sub-option 1 is "yes"
awk
脚本将返回=
(和任何空格)之后的所有内容,这样您就可以存储包含多个单词的数据。仅处理配置文件中以option1
开头的行。
这将适用于将整个配置文件解析为单个结构,可能使用最新版本的bash
中的关联数组。
答案 3 :(得分:0)
我们已经可以看到一些很棒的答案,但是当您向grep询问时,如果需要,可以使用以下其中一种。
对于所有值
grep option1 m | cut -d "=" -f2 | awk '{$1=$1};1' | head -1
第一个值
TextViewR
这里:cut用于切割第二个选项uisng dilimiter =; awk用于修剪输出中的空格,head用于打印第一次出现的
答案 4 :(得分:0)
使用sed
user
使用gnu grep 2.20(支持pcre)
users
如果你只想获得第一场比赛
protected function validator(array $data)
{
return Validator::make($data, [
'name' => 'required|max:255',
'role' => 'required|max:7',
'username' => 'required|unique:users,username',
'password' => 'required|min:6|confirmed',
]);
}