如何将文件中的文本提取到变量中,同时用标记替换该文本?

恶魔蝗虫

我有一个property: value;成对的文件(它是CSS)。我想浏览该文件,然后用正则表达式将某些值提取到shell变量中,同时用标记替换文件中的文本。

我为FILE1:

position: float;
background: url("data:image/loremipsum");
height: auto;
background: url("data:image/loremipsum2");

假设我要提取图像网址并将其保存到数组中:

FILE1=path/to/file1
URL[0]=$(echo "$FILE1" | grep "data:image" | awk ???)
# Expected: "data:image/loremipsum"
URL[1]=$(echo "$FILE1" | grep "data:image" | awk ???)
# Expected: "data:image/loremipsum2"

然后,从我提取文本的位置,将该文本替换为“ MARKER0”,“ MARKER1”,依此类推。

我以为解决此问题的方法将涉及awk,但我键入了内容man awk我的头几乎掉了下来。假设我知道如何为此编写正则表达式,该从哪里开始呢?

我需要awk吗?是否需要循环遍历每个图像值?

RavinderSingh13

您可以尝试以下吗?

arr=($(awk '/background/ && match($0,/\".*\"/){print substr($0,RSTART+1,RLENGTH-2)}' Input_file))
OR to use a variable's value for awk as an input then try following.
arr=($(echo "$VAR" | awk '/background/ && match($0,/\".*\"/){print substr($0,RSTART+1,RLENGTH-2)}'))

要打印数组的值,请尝试以下操作。

for i in "${arr[@]}"
do
  echo "$i"
done

或者也可以使用数组值的打印来打印出适当知道的元素的索引值,然后尝试以下操作。

count=0
for i in "${arr[@]}"
do
  echo "arr["$count"]=$i"
  count=$((count + 1))
done


编辑:由于OP表示值之间可能存在空格。因此,可能的解决方案可能是打印awk命令中的值,并在这些值之间添加一个新字符(它将用作BASH数组迭代的字段分隔符),%因此我已经执行过操作,因此在运行awk命令时它将给出以下信息(使用测试值)在此处显示的输出中)

awk '/background/ && match($0,/\".*\"/){val=val?val "%" substr($0,RSTART+1,RLENGTH-2):substr($0,RSTART+1,RLENGTH-2)} END{print val}' Input_file

singh:test/ bla_bla_bla%singh:bla1/bla2

运行以下命令以创建名为的数组arr

arr=($(awk '/background/ && match($0,/\".*\"/){val=val?val "%" substr($0,RSTART+1,RLENGTH-2):substr($0,RSTART+1,RLENGTH-2)} END{print val}' Input_file))

现在,如果我们设置IFS='%'并运行以下命令。

echo "${arr[0]}"
singh:test/ bla_bla_bla
echo "${arr[1]}"
singh:bla1/bla2

由于采用了新的分隔符,%因此不会破坏其中包含空格的值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将文本文件中的字符串作为标记变量提取到电子表格中

如何将文本节提取到基于ID命名的单独文件中?

如何将 Windows 服务列表及其状态提取到文本文件中?

如何从Watson Assistant将变量提取到文本文件中?

如何将多个文本文件中的特定行提取到Linux上的单个txt文件中?

如何将由Stanford NER标记的文本提取到csv中?

使用Bash,Perl和Regex将文本文件中的变量提取到数组中

PowerShell - 将文本提取到变量中(RegEx?)

将文本行提取到变量字符串中

将文本文件的前5行提取到变量中

如何将时间从文本文件提取到另一个文本文件/列表中

将文本提取到新文件中

如何将文本文件添加到 bash 脚本中,然后使用该文本文件

如何将命令的退出状态提取到变量中?

如何将多个文本文件读取到pyspark中的数据框中

如何使用 Python 将多个文本文件的内容提取到 Pandas 数据框中?

如何将pdf文件的内容提取到字符串变量中

如何将“文本表”读取到表中

如何将基于一列中不同类别的数据行提取到单独的文本文件中?

如何将文本文件中的值解析为列表,同时用None填充缺少的值?

如何将文本文件资源读取到Java单元测试中?

如何将位于当前目录中的文本文件名获取到带有批处理文件的变量中

如何将单个 xmltype 标记中的值提取到 oracle 中的不同列中?

如何将2个匹配模式之间的文本提取到多个文件?

如何将节点值从xml提取到文本文件

如何将文件中的文本读取到数组中,然后将整个数组打印出来

用sbt替换文本文件中的变量

将文本文件中的数据提取到VBA中的Excel中

在同时对文本文件进行某些操作之后,如何删除该文本文件中的特定行