[英]How to replace a specific line in a file with a string variable using the line number bash script?
[英]How to get a number with variable number of digits from a string in a file using bash script?
我有以下文件:
APP_VERSION.ts
export const APP_VERSION = 1;
這是該文件的唯一內容, APP_VERSION
變量將根據需要遞增。
因此, APP_VERSION
可以是一位數字或多位數字,例如15
或999
等。
我需要在我的 bash 腳本之一中使用該值。
使用-app-version.sh
APP_VERSION=`cat src/constants/APP_VERSION.ts`
echo $APP_VERSION
我知道我可以用cat
閱讀它。 但是,我該如何解析該string
,以便准確獲取APP_VERSION
值,例如,它是1
還是999
。
sed -En 's/(^.*APP_VERSION.*)([[:digit:]]+.*)(\;.*$)/\2/p' src/constants/APP_VERSION
使用 sed,將該行拆分為由左括號和右括號定義的三個部分。 將第二部分的行替換為(版本值)並打印。
您可以使用這個 awk:
app_ver=$(awk -F '[[:blank:];=]+' '$(NF-2) == "APP_VERSION" {print $(NF-1)}' src/constants/APP_VERSION.ts)
echo "$app_ver"
1
您可以連接一些命令以刪除其他所有內容:
APP_VERSION=`cat src/constants/APP_VERSION.ts | awk -F '=' '{print $2}' | tr -d ' ' | tr -d ';'`
1 - Cat 獲取所有文件內容
2 - AWK 獲取'='之后的所有內容
3 - 刪除空間
4 - 移除;
一個簡單的
APP_VERSION=$(grep --text -Eo '[0-9]+' src/constants/APP_VERSION.ts)
應該夠了
僅限 bash:
APP_VERSION=$(cat src/constants/APP_VERSION.ts)
APP_VERSION=${APP_VERSION%;}
APP_VERSION=${APP_VERSION/*= }
第 2 行刪除尾隨的 ';',第 3 行刪除“=”之前的所有內容。 或者,您可以將 APP_VERSION 設置為數組,取第 5 個元素,並刪除尾隨的“;”。
或者,另一種解決方案,使用 IFS:
IFS='=;' read a APP_VERSION < src/constants/APP_VERSION.ts
在這個版本中,空格將保留在版本號之前。
假設任務可以改寫為“從文件中提取數字”,有幾個選項:
使用tr
刪除所有不是數字的字符:
version=$(tr -cd '[:digit:]' < infile)
使用 grep 匹配所有數字,只保留匹配項:
version=$(grep -Eo '[[:digit:]]+' infile)
將文件讀入字符串並僅使用 Bash 刪除所有非數字:
contents=$(< infile) version=${contents//[:[:digit:]]}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.