我有一個包含幾個字串的檔案。喜歡 :
appname-2021.12.24
appname2020-2021.12.23
app_name-2021.12.01
app_name2020-2021.12.02
app-name-2021.11.10
我想要單個變數中這些字串的 appname 和版本,所以我可以從我的腳本輸出一個 csv 檔案在這種情況下:
appname,2021.12.24
appname2020,2021.12.23
app_name,2021.12.01
app_name2020,2021.12.02
app-name,2021.11.10
版本總是帶有點的子字串,前面有一個 - 。
我的想法是在一個單獨的變數中獲取名稱和版本,并最終將其合并到一個帶有額外逗號的新變數中
string = $appname","$appversion
我嘗試使用cut- 分隔符,但這不適用于示例 5。使用grep -Eo “[a-zA-Z_] ”也不起作用,在示例 2 中缺少 2020。
是否有可能找到從行尾到第一行的所有歌曲和點 - ?
uj5u.com熱心網友回復:
與bash:
while read -r line; do
if [[ "$line" =~ (.*)-([^-] )$ ]]; then
string="${BASH_REMATCH[1]},${BASH_REMATCH[2]}"
echo "$string"
fi
done < file
輸出:
應用名稱,2021.12.24 appname2020,2021.12.23 app_name,2021.12.01 app_name2020,2021.12.02 應用名稱,2021.11.10
請參閱:堆疊溢位正則運算式常見問題解答
uj5u.com熱心網友回復:
簡單地說bash:
#!/bin/bash
while read -r line; do
printf '%s,%s\n' "${line%-*}" "${line##*-}"
done < file
或者,使用sed單線:
sed 's/\(.*\)-/\1,/' file
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/392355.html
