我有一个工作脚本可以存储在var中的单个字符串,而不包含回车或多行文件的空格或表格:git配置文件。
但它不再有效,因为github改变了该文件的语法。
目前的文件内容如下:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = git@github.com:user/repo.git
fetch = +refs/heads/*:refs/remotes/origin/*
#commented line
我目前用于提取所需字符串的内容:
var3=$(sed 's/^[ \t]*//' .git/config | sed ':a;N;$!ba;s/\n//g' | sed -rn 's/.*https:\/\/(.*?)fetch.*/\1/p')
echo "this is repo"
echo $var3
我希望它返回:
"this is repo"
"git@github.com:user/repo.git"
我得到了什么:
"this is repo"
""
答案 0 :(得分:2)
你可以这样做:
echo -e "\"this is repo\"\n\"$(sed -n "s/.*url = \(.*\)/\1/p" inputfile.txt)\""
输出:
"this is repo"
"git@github.com:user/repo.git"
sed的命令:sed -n s/.*url = \(.*\)/\1/p
将打印以任何内容开头的行(.*
),后跟url =
后跟一个网址。匹配的行将被URL替换,该URL将被打印(通过sed' p
命令)。