bash - 使用 "sed"从文件中获取子字符串

标签 bash sed substring

任何人都可以帮助我使用 sed 获取子字符串吗?程序?

我有一个包含这一行的文件:

....
define("BASE", "empty"); # there can be any string (not only "empty").
....

而且我需要将“空”作为字符串变量添加到我的 bash 脚本中。

此刻我有:

sed -n '/define(\"BASE\"/p' path/to/file.ext
# returns this line:
# define("BASE", "empty");
# but I need 'empty'

UPD:感谢@Jaypal

现在我有 bash 脚本:

DBNAME=`sed -n '/define(\"BASE\"/p' path/to/file.ext`
echo $DBNAME | sed -r 's/.*"([a-zA-Z]+)".*/\1/'

它工作正常,但是否有任何方法可以用一行代码进行相同的操作?

最佳答案

你应该使用 is

sed -n 's/.*\".*\", \"\(.*\)\".*/\1/p' yourFile.txt

意思是 (.*) 后跟引号 (\".*\"),然后是逗号和空格 (, ),然后又是引号内的内容 (\"\(.*\)\")。

括号定义了您以后可以重用的部分,即第二个引号中的字符串。与 \1 一起使用。

我把 -n 放在前面是为了回答更新后的问题,让被操纵的行在线。

关于bash - 使用 "sed"从文件中获取子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8847718/

相关文章:

bash - 获取sshd的PID

php - Sed 和 PHP 关联数组

sed - 如何在 Makefile (POSIX) 中使用的 sed 命令中保持换行符完整?

linux - 不返回命令行语法错误

python + 如何在 python 中验证 linux 命令是否成功

linux - 使用 Sed/Awk 仅删除 Linux 文件中的字母字符行

objective-c - 将 Swift 函数转换为 Objective-C SubstringToIndex

java - 检查字符串数组是否包含值

c - C 中 strncpy 的总线错误

linux - 如何编写脚本以使用我的凭据连接到 ssh 服务器?