我有这个脚本 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
命令)?
提前感谢。
man grep
并查找-P
和-o
?-P
的描述实际上很可能会让其他内容变得显而易见。 - Charles Duffy$file_path
实际上意味着你有一些错误 - 传递一个位于名为“我的文档”的目录中的文件名将会出现问题。始终引用您的扩展:"$file_path"
- Charles Duffy