【发布时间】:2017-06-13 14:39:57
【问题描述】:
我有这个脚本script.sh:
#!/bin/bash
file_path=$1
result=$(grep -Po 'value="\K.*?(?=")' $file_path)
echo $result
还有这个文件text.txt:
value="a"
value="b"
value="c"
当我运行./script.sh /file/directory/text.txt 命令时,终端中的输出如下:
a b c
我明白脚本的作用,但我不明白它是如何工作的,所以我需要对这部分命令进行详细解释:
-Po 'value="\K.*?(?=")'
如果我理解正确的话,\K 是一个 Perl 命令。你能在 shell 中给我一个替代方案吗(例如使用awk 命令)?
提前谢谢你。
【问题讨论】:
-
每个问题一个问题,请。
-
@jwodder 我已经编辑过了。
-
您是否尝试过阅读
man grep,并寻找-P和-o?-P的描述实际上很可能使其余部分变得相当明显。 -
顺便说一句,我已经编辑了问题标题以使该标题特定于所提出的问题。以后请尝试自己做。
-
另外——没有引用
$file_path实际上意味着你有一些错误——传递一个名为My Documents的目录中的文件名会很糟糕。始终引用您的扩展:"$file_path"