Shell 脚本获取 2 个特殊字符之间的文本
Shell Script get text between 2 special characters
我已经阅读了一些内容,但似乎无法解决这个特定问题。我正在写一个 shell 脚本。我正在使用
将文件读入变量
LOCAL_CONFIG=`cat local-config.php`
其中有这样的行
define( 'DB_USER', 'abcxyz' );
define( 'DB_PASSWORD', 'qwerty' );
我怎样才能得到它的 abcxyz 和 qwerty 部分?
提前致谢
使用 grep 和 -P
参数启用 perl-regexp 模式。
$ grep -oP "\bdefine\( *'[^']*' *, *'\K[^']*(?=' *\);)" file
abcxyz
qwerty
\K
在最后打印时丢弃先前匹配的字符。
使用 awk
$ awk -F"'" '/^define\(/ {print }' local-config.php
abcxyz
qwerty
解释:
-F"'"
这将字段分隔符定义为单引号。
/^define\(/
这将选择以 define(
开头的行
print
对于那些选定的行,这将打印第四个字段。
使用 sed
$ sed -rn "/^define\(/ {s/([^']*'){3}//; s/'.*//; p;}" local-config.php
abcxyz
qwerty
-rn
这会打开扩展的正则表达式语法并关闭自动打印。
/^define\(/
这将选择以 define(
开头的行
{
这将启动一个组。该组中的命令仅针对选定的行执行。
s/([^']*'){3}//
这将删除第三个引号之前的所有文本。
s/'.*//
这将删除下一个剩余引号之后的所有文本。
p
这将打印该行。
}
群到此结束。
"cut" 命令将以更简单的方式执行...
命令:
cat local-config.php | cut -d "'" -f4
输出:
abcxyz
qwerty
解释:
使用 cut with ' 作为分隔符,我们需要在行中使用第四部分 (f4)。
我已经阅读了一些内容,但似乎无法解决这个特定问题。我正在写一个 shell 脚本。我正在使用
将文件读入变量LOCAL_CONFIG=`cat local-config.php`
其中有这样的行
define( 'DB_USER', 'abcxyz' );
define( 'DB_PASSWORD', 'qwerty' );
我怎样才能得到它的 abcxyz 和 qwerty 部分?
提前致谢
使用 grep 和 -P
参数启用 perl-regexp 模式。
$ grep -oP "\bdefine\( *'[^']*' *, *'\K[^']*(?=' *\);)" file
abcxyz
qwerty
\K
在最后打印时丢弃先前匹配的字符。
使用 awk
$ awk -F"'" '/^define\(/ {print }' local-config.php
abcxyz
qwerty
解释:
-F"'"
这将字段分隔符定义为单引号。
/^define\(/
这将选择以
define(
开头的行
print
对于那些选定的行,这将打印第四个字段。
使用 sed
$ sed -rn "/^define\(/ {s/([^']*'){3}//; s/'.*//; p;}" local-config.php
abcxyz
qwerty
-rn
这会打开扩展的正则表达式语法并关闭自动打印。
/^define\(/
这将选择以
define(
开头的行
{
这将启动一个组。该组中的命令仅针对选定的行执行。
s/([^']*'){3}//
这将删除第三个引号之前的所有文本。
s/'.*//
这将删除下一个剩余引号之后的所有文本。
p
这将打印该行。
}
群到此结束。
"cut" 命令将以更简单的方式执行...
命令:
cat local-config.php | cut -d "'" -f4
输出:
abcxyz
qwerty
解释:
使用 cut with ' 作为分隔符,我们需要在行中使用第四部分 (f4)。