标签: grep

除了完整的锚标签之外的所有内容 - Perl

我需要解析HTML文件并删除除锚标记之外的所有内容.例如:

<html>
    <body>
        <p>boom</p>
        <a href="/blah" rel="no-follow">Example</a>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我只需要保持:

<a href="/blah" rel="no-follow">Example</a>
Run Code Online (Sandbox Code Playgroud)

我正在使用cURL来检索html和我发现的一小段代码,除了标签的锚文本之外.这就是我正在使用的:

curl http://www.google.com 2>&1 | perl -pe 's/\<.*?\>//g'
Run Code Online (Sandbox Code Playgroud)

有一个简单的命令行方式来做到这一点?我的最终目标是将其放入bash脚本并执行它.我很难理解正则表达式和perl.

regex bash perl grep curl

-1
推荐指数
1
解决办法
330
查看次数

Bash:grep 独特的行

我想要grep独特的路线。这是文件内容:

this is line 1
this is line 1
this is line 2
this is line 1
this is line 1
Run Code Online (Sandbox Code Playgroud)

我只想输出this is line 2到我的外壳。我怎样才能做到这一点?

bash grep uniq

-1
推荐指数
2
解决办法
1万
查看次数

在bash,curl,grep序列之后,我如何回应"通过"或"失败"?

我是优雅单行的忠实粉丝.我正在尝试编写一个单行测试,在执行http请求和搜索后输出"pass"或"fail".我尝试过这样的事情:

curl "http://haystack.io" | sed 's/.*?needle.*/PASS/' || echo FAIL
Run Code Online (Sandbox Code Playgroud)

......但这不会失败.

还尝试过:

curl "http://haystack.io" | if [$(grep -oE "needle") = "needle"]; then echo PASS; else echo FAIL; fi
Run Code Online (Sandbox Code Playgroud)

...但我无法正确理解语法.

我怎样才能做到这一点?

macos bash grep curl sed

-1
推荐指数
1
解决办法
367
查看次数

鱼壳上的奇怪的grep行为

cat > abc.txt <<EOF
2014-04-11 00:00:00
2014-02-19 00:22:00
EOF
Run Code Online (Sandbox Code Playgroud)

当我执行

grep -E :[0-9]{2}: abc.txt
Run Code Online (Sandbox Code Playgroud)

我明白了

2014-02-19 00:22:00
Run Code Online (Sandbox Code Playgroud)

我在期待

2014-04-11 00:00:00
2014-02-19 00:22:00
Run Code Online (Sandbox Code Playgroud)

这发生在鱼壳(2.4.0)上,在bash上工作正常.我对这里发生的事情非常感兴趣

regex shell grep fish

-1
推荐指数
1
解决办法
366
查看次数

正则表达式在Grep中工作但不是vim

我有一个这种格式的文件,problem.txt:

StarBonds

? | 356 Positions | Gain: H$59,834,200 (15.26%)
Security    Shares  &   Paid    Current     Today   ?   Value   Gain / Loss     ±
AANDE   20,000  !|!     H$26.35     H$29.84     H$0.08      H$596,800   H$69,800    13%
ABASS   20,000  !|!     H$51.68     H$51.29     -H$0.27         H$1,025,800     -H$7,800    -0%
ABRAG   20,000  !|!     H$39.65     H$44.98     -H$0.13     ?   H$899,600   H$106,600   13%
ABRES   20,000  !|!     H$49.62     H$45.26     -H$0.40         H$1,079,600     H$87,200    8%
Run Code Online (Sandbox Code Playgroud)

我想删除所有不以2-5字符,所有大写字母标识符开头的行.

在grep的命令行中,它只向我显示那些行而不是"垃圾行"(前面四个例子中的前四行).即我想要的结果.$ grep'^ [A-Z0-9] [A-Z0-9] +'problem.txt

AANDE   20,000  !|!     H$26.35     H$29.84     H$0.08      H$596,800   H$69,800    13%     
ABASS   20,000  !|!     H$51.68     H$51.29     -H$0.27 …
Run Code Online (Sandbox Code Playgroud)

regex linux vim grep

-1
推荐指数
1
解决办法
80
查看次数

ps的grepping输出,排除单词grep

我正在使用ps查找创建为执行命令“ sleep 1234&”的进程的pid,我将结果复制为仅匹配“ sleeping 1234”。

ps -A -f | grep "sleep 1234"
Run Code Online (Sandbox Code Playgroud)

但是,它本身也与命令“ grep sleep 1234”匹配,返回两行而不是一行。如何为grep编写模式以排除单词“ grep”本身?

谢谢

linux shell grep ps

-1
推荐指数
1
解决办法
2066
查看次数

使用Grep在匹配前获取Capture Group和Line

假设我有一个名为的文件'test.txt':

>reference1
fooHappybar
>reference2
fooBirthdaybar
Run Code Online (Sandbox Code Playgroud)

我需要一个grep命令,将捕获的字符串foobar线直接在比赛上面,和.该命令应该导致以下输出:

>reference1
Happy
>reference2
Birthday
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止:

grep -oP 'foo\K\w+(?=bar)' test.txt
Run Code Online (Sandbox Code Playgroud)

这使:

Happy
Birthday
Run Code Online (Sandbox Code Playgroud)

我知道grep -B 1在比赛前输出比赛和线路.我试过了:

grep -oP -B 1 'foo\K\w+(?=bar)' test.txt
Run Code Online (Sandbox Code Playgroud)

但这不起作用.

任何指导表示赞赏.

编辑:

awk如果我有这个文件,命令将如何改变?

>reference1
AGTCTGCAFOOHAPPYBARGTACAC
>reference2
GTACAFOOBIRTHDAYBARGACCAT
Run Code Online (Sandbox Code Playgroud)

预期产量:

>reference1
HAPPY
>reference2
BIRTHDAY
Run Code Online (Sandbox Code Playgroud)

regex linux perl grep

-1
推荐指数
1
解决办法
174
查看次数

如何在一行中计算匹配的模式?

enter code here我有一个包含序列的 fasta 文件

>lcl|QCYY01003067.1_cds_ROT65593.1_2 
ATGCGTCTCCCCTTTAGAGAGTTCTCTCTAGCTACGTA
>lcl|QCYY01003067.1_cds_ROT65593.1_3
ATCTCTNNNNNNNNNNATATCCCCTTTNNNNNCTCTCT
>lcl|QCYY01003067.1_cds_ROT65593.1_4
ATCTCTNNNNNNNNNNATATCCCCTTCTCGGGGCCCC 
Run Code Online (Sandbox Code Playgroud)

我想计算“N”的数量以及每行中出现的模式数量。无需包含标题 (>lcl|QCYY01003067.1_cds_ROT65593.1_2 )

例如:-

 line 2=0,0
 line 4=15,2
 line 6=10,1
Run Code Online (Sandbox Code Playgroud)

如何改进此代码:

grep -n '[{N}]' <filename> | cut -d : -f 1 | uniq -c
Run Code Online (Sandbox Code Playgroud)

shell awk grep design-patterns count

-1
推荐指数
1
解决办法
140
查看次数

Bash:如何计算文件中字符串出现的次数?

我有一个看起来像这样的文件:

dog
cat
dog
dog
fish
cat
Run Code Online (Sandbox Code Playgroud)

我想在 Bash 中编写某种代码来使文件格式化为:

dog:1
cat:1
dog:2
dog:3
fish:1
cat:2
Run Code Online (Sandbox Code Playgroud)

关于如何做到这一点的任何想法?该文件非常大(> 30K 行),所以代码应该有点快。

我在想某种循环......

像这样:

while read line; 
     echo "$line" >> temp.txt
     val=$(grep $line temp.txt)
     echo "$val" >> temp2.txt
done < file.txt 
Run Code Online (Sandbox Code Playgroud)

进而 paste -d ':' file1.txt temp2.txt

但是,我担心这会很慢,因为您要逐行进行。其他人怎么看?

string bash awk grep

-1
推荐指数
1
解决办法
60
查看次数

使用管道和字数(wc)然后修饰结果

我想打扮我正在做的 grep 的输出。

想象一个包含大量文本的文件 text.txt。然后我执行以下命令:

grep fred text.txt | wc -l
grep bob text.txt | wc -l
grep james text.txt | wc -l
Run Code Online (Sandbox Code Playgroud)

我得到输出:

12
3
4
Run Code Online (Sandbox Code Playgroud)

我想打印的输出是:

fred was found on 12 lines.
bob was found on 3 lines.
james was found on 4 lines.
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

awk grep wc

-1
推荐指数
1
解决办法
60
查看次数

标签 统计

grep ×10

bash ×4

regex ×4

awk ×3

linux ×3

shell ×3

curl ×2

perl ×2

count ×1

design-patterns ×1

fish ×1

macos ×1

ps ×1

sed ×1

string ×1

uniq ×1

vim ×1

wc ×1