![](/img/trans.png)
[英]Retrieve string between characters and assign on new variable using awk in bash
[英]find and assign a string to a variable in bash
如何使用bash從文件中查找字符串。
我有一個文件“ version.txt”,並且文件中包含內容
version = "0.0.1-SNAPSHOT"
需要一個bash命令來動態提取版本密鑰的值。
version=$(grep ^version version.txt | cut -d'"' -f2)
您可以使用以下命令之一,並將結果分配給變量:
輸入:
$ cat version.txt
abc
version = "0.0.1-SNAPSHOT"
123
grep:
$ grep -oP '(?<=^version\s=\s")[^"]*' version.txt
0.0.1-SNAPSHOT
perl:
$ perl -ne 'if(/^version/){s/^version\s*=\s*|"//g; print}' version.txt
0.0.1-SNAPSHOT
還有許多其他方法可以達到您的結果( sed
, awk
,...)
說明:
1)您在perl
模式下使用grep
並使用后向斷言,在這種情況下,我認為您的等值總是被1包圍,只有1個空格
2) perl
方法更靈活(可以在等號周圍放置0,1或更多空格),此處的原理是您標識以version
開頭的行,然后在打印結果之前刪除version =
和雙引號。
var=$(awk '/version/ {print $3}' file.txt)
/ EXPR / <-您可以在awk中使用類似正則表達式的表達式。 $ 3,因為我們對第三欄感興趣,因此您也可以使用以下代碼:
var=$(awk '/version/ {print $(NF)}' file.txt)
awk中的NF是當前行的字段數,在這種情況下為3。
awk -F'=''{print $ 2}'version.txt
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.