簡體   English   中英

在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

還有許多其他方法可以達到您的結果( sedawk ,...)

說明:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM