如何匹配模式并替换另一个模式

时间:2017-07-17 09:11:59

标签: bash shell

我有一个.pro文件,其中包含一行" Max_length:123"。我需要取一个usser输入值,例如:145,并重新构造一行,如" Max_length:145"。怎么样?

3 个答案:

答案 0 :(得分:1)

read var
awk -v var=$var '$0 ~ /Max_length:/ { print "Max_length:"var } $0 !~ /Max_length:/ { print $0 }' oldfile > newfile
mv newfile oldfile

读入变量var的输入。将此作为变量传递给awk,如果文件oldfile中的行与模式匹配“Max_length:”,则将文本与行一起打印。在所有情况下,只需打印该行。将输出重定向到新文件,然后重命名newfile oldfile。

答案 1 :(得分:0)

$ cat file
Max_length: 123
Foo: 666
$ awk -v v=145 '$1=="Max_length:"{$2=v}1' file
Max_length: 145
Foo: 666

说明:

$ awk -v v=145 '     # using awk, set desired value to v
$1=="Max_length:"{   # if Max_... in the first field
    $2=v             # replace second with v
}1' file             # output

答案 2 :(得分:0)

read val && sed -i -e s/"`grep Max_length: $file_name>`"/"Max_length: $val"/g file_name

其中 file_name 是文件路径。

此脚本会将 Max_length 从任何值更改为用户提供的输入。