Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.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
Bash 断开长绳_Bash_Sed - Fatal编程技术网

Bash 断开长绳

Bash 断开长绳,bash,sed,Bash,Sed,我如何打破一条长长的sed线,例如: sed -n 's/.*<a href="\(.*\)" target="_blank" rel="nofollow">Download<\/a>.*/\1/p' sed -n 's/.*<a href="\(.*\)" target="_blank" rel="nofollow">Download<\/a>.*/\1/p' sed-n's/*下载./\1/p' 我想有这样的例子: sed -n '

我如何打破一条长长的sed线,例如:

sed -n 's/.*<a href="\(.*\)" target="_blank" rel="nofollow">Download<\/a>.*/\1/p'
sed -n 's/.*<a href="\(.*\)" target="_blank" 
  rel="nofollow">Download<\/a>.*/\1/p'
sed-n's/*下载./\1/p'
我想有这样的例子:

sed -n 's/.*<a href="\(.*\)" target="_blank" rel="nofollow">Download<\/a>.*/\1/p'
sed -n 's/.*<a href="\(.*\)" target="_blank" 
  rel="nofollow">Download<\/a>.*/\1/p'
sed-n's/*下载./\1/p'

我知道“\”但它对sed不起作用。谢谢。

您实际上想要提取字符串(url),而不是替换。放下塞德和格雷普怎么样?它会很短

grep -Po '(?<=href=")[^"]*' file

grep-Po'(?我已经找到了一个多变量的解决方案。它并不完美,但很有效。这是为了防止其他人出现类似问题。如果有人找到更好的解决方案,请在这里分享

str1='<a href="\(.*\)" target="_blank"'
str2='rel="nofollow">Download<\/a>'
sed -n "s/.*$str1 $str2.*/\1/p"
str1='下载'
sed-n“s/*$str1$str2.*/\1/p”
另一种方法是使用herdeoc,这是一种更干净的方法

str=$(cat <<'EOF'
<a href="\(.*\)" target="_blank" \
rel="nofollow">Download<\/a>
EOF
)

sed -n "s/.*$str.*/\1/p"

str=$(cat您可以在shell级别而不是sed级别破坏它:

sed -n 's/.*<a href="\(.*\)" target="_blank" '\
'rel="nofollow">Download<\/a>.*/\1/p'
sed-n's/*下载./\1/p'

不幸的是,这不允许缩进第二行。

为什么?大多数人的终端现在可以做>80个字符…是的,但我喜欢将我的脚本保持在80以下这使得使用80x24终端和nano=)更容易。谢谢评论。那些只是示例=)我需要知道如何在sed内部拆分。所以你的例子和我的问题无关,但谢谢。@Tux我在你的sed行中没有看到“split”。刚刚看到你把线“断”成两半。顺便说一句,你的问题被标记为
bash
,我认为grep也参与其中。但很抱歉打扰你。是的,这也行。此外,如果链接中的target和rel变量之间需要空格,可以执行target=“\u blank””\注意双引号和单引号之间的空格。我以前尝试过这种方法,但使用rel变量之前的缩进,这对ofc不起作用。谢谢你指出这一点。
sed -n 's/.*<a href="\(.*\)" target="_blank" '\
'rel="nofollow">Download<\/a>.*/\1/p'