Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何剥离文件中行的开头和结尾_Regex_Bash - Fatal编程技术网

Regex 如何剥离文件中行的开头和结尾

Regex 如何剥离文件中行的开头和结尾,regex,bash,Regex,Bash,我有一个包含链接列表的文件,但它们有无法使用的线索和线索需要清除 特别是 这个文件里有20多个类似的链接和所有的垃圾,我只需要占位符 如果这是一个单一的链接,那就很容易了 link='${link#*"}' && link='${%"*}' && echo $link 可能有一种方法可以在一个命令中实现这一点,但我不知道如何实现,而且我也不处理文件中的列表 问题是这样的;我如何去掉文件外部的任何内容,并在文件中的列表中包含引号,然后进行迭代

我有一个包含链接列表的文件,但它们有无法使用的线索和线索需要清除

特别是

这个文件里有20多个类似的链接和所有的垃圾,我只需要
占位符

如果这是一个单一的链接,那就很容易了

link='${link#*"}' && link='${%"*}' && echo $link
可能有一种方法可以在一个命令中实现这一点,但我不知道如何实现,而且我也不处理文件中的列表

问题是这样的;我如何去掉文件外部的任何内容,并在文件中的列表中包含引号,然后进行迭代

到目前为止,我一点线索也没有,尽管我已经搜索了几个小时了。 因为这些都是等长的,所以我认为sed操作可能会在一个设定的位置上消除复杂的数据 这就产生了一些假设:

  • 标记/属性是小写的
  • 每行只有一个img标签
  • 整个img标签在一行上
正则表达式细分:

  • *
    标记前填充
  • <*img
    标签打开,可选空格
  • [^>]*
    尽可能多的非
    字符
  • src=
    src属性
  • “([^”]*)”
    捕获引号内的所有内容
  • [^>]*\/>
    标记的其余部分
  • *
    标记后面的内容
简单数据 如果您的数据像
一样简单,那么下面的内容可能适合您

echo '<img src="place-holder" />' | sed -E 's/.*"(.*)".*/\1/g'
我讨厌sed 如果必须:

echo '<img src="place-holder" />' | cut -d'"' -f2
echo'| cut-d'-f2
我可以去一整天 为什么不:

 echo '<img src="place-holder" />' | awk -v FS='"' '{ print $2 }'
echo'|awk-vfs=''''{print$2}'
自动热键? 我是说,我想

for tag in '<img src="place-holder" />' '<img src="place2" />'; do echo $tag; done | \
    sed -E 's/"/\\"\\"/g' | xargs -I {} echo -e \
    "Result := RegExReplace(\"{}\`n\",\"^.*\"\"(.*)\"\".*$\",\"\$1\`n\")\n" \
    "FileAppend %Result%, *" | pwsh.exe -c "AutoHotkey.exe * | echo"
用于“”中的标记;do echo$tag;done |\
sed-E的/“/\”/g'| xargs-I{}echo-E\
“结果:=RegExReplace(\“{}\`n\”,\“^.*\”(.*)\“\”*$”,\“\$1\`n\”)\n”\
“FileAppend%Result%,*”| pwsh.exe-c“AutoHotkey.exe*| echo”

我。。。我不敢相信我真的让最后一个工作了…

当我有你在这里的时候,你们这些在Lambda的家伙必须停止在那些门户网站上胡闹!谁知道会发生什么事!上帝我讨厌sed,是时候学习如何使用它了!sed手册页有点像丛林。为什么现在还要用高级sed呢?我只需要将#line推到STDIN,捕获qutes中的所有内容并附加到一个新文件中,然后用新文件替换od。谢谢你,小伙子/姑娘!我不知道你的数据是什么样子的,但我想我假设在同一行上可能有其他东西,包括引号、img属性等。是的,当然越简单越好。无需将行推到
stdin
-i
选项允许
sed
就地编辑文件。。。
echo '<img src="place-holder" />' | cut -d'"' -f2
 echo '<img src="place-holder" />' | awk -v FS='"' '{ print $2 }'
for tag in '<img src="place-holder" />' '<img src="place2" />'; do echo $tag; done | \
    sed -E 's/"/\\"\\"/g' | xargs -I {} echo -e \
    "Result := RegExReplace(\"{}\`n\",\"^.*\"\"(.*)\"\".*$\",\"\$1\`n\")\n" \
    "FileAppend %Result%, *" | pwsh.exe -c "AutoHotkey.exe * | echo"