- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有这个脚本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
命令)?
提前谢谢你。
最佳答案
grep -P
启用 PCRE 语法。 (这是一个非标准扩展——甚至不是所有的 GNU grep 构建都支持它,因为它依赖于可选的 libpcre 库,是否链接它是一个编译时选项)。grep -o
在输出中只发出匹配的文本,而不是包含所述文本的整行。 (这也是非标准的,尽管比 -P
更广泛使用)。\K
是正则表达式语法的 PCRE 扩展,它会丢弃匹配输出中包含的那一点之前的内容。因为你的 shell 是 bash,你有内置的 ERE 支持。作为仅使用内置功能的替代方案(没有外部工具,grep
,awk
或其他):
#!/usr/bin/env bash
regex='value="([^"]*)"' # store regex (w/ match group) in a variable
results=( ) # define an empty array to store results
while IFS= read -r line; do # iterate over lines on input
if [[ $line =~ $regex ]]; then # ...and, when one matches the regex...
results+=( "${BASH_REMATCH[1]}" ) # ...put the group's contents in the array
fi
done <"$1" # with stdin coming from the file named in $1
printf '%s\n' "${results[*]}" # combine array results with spaces and print
参见 http://wiki.bash-hackers.org/syntax/ccmd/conditional_expression =~
和 http://wiki.bash-hackers.org/syntax/shellvars#bash_rematch 的讨论用于讨论 BASH_REMATCH
。参见 BashFAQ #1有关使用 while read
循环逐行读取文件的讨论。
关于linux - grep -Po '...\K...' 有什么作用?否则如何达到这种效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44524643/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!