提取具有特定字符数的行

时间:2016-07-28 15:42:53

标签: bash awk grep

我有一个python脚本,它从pastebin.com/archive中提取URL,其中包含指向pastes的链接(在url中的pastbin.com之后有8个随机数字)。我当前的输出是.txt,其中包含以下数据,我只希望链接到当前的粘贴(例如:http://pastebin.com///Y5JhyKQT),而不是指向其他页面的链接,例如pastebin.com/tools)。这是我可以设置wget去拉每个单独的粘贴。

我能想到的唯一方法就是编写一个bash脚本来计算每行中的字符数,并且只保留30行字符(这是链接到pastes的URL的长度)。

我不知道我是如何使用grep或awk实现类似的东西,也许是使用while do循环?任何帮助将不胜感激!

http://pastebin.com///tools
http://pastebin.com//top.location.href
http://pastebin.com///trends
http://pastebin.com///Y5JhyKQT <<< I want to keep this
http://pastebin.com//=
http://pastebin.com///>

3 个答案:

答案 0 :(得分:1)

从你发布的样本中看起来你需要的只是:

grep -E '/[[:alnum:]]{8}$' file

或者也许:

grep -E '^.{30}$' file

如果这对您不起作用,请解释原因并提供更好的样本。

答案 1 :(得分:0)

#!/usr/bin/env zsh
while read aline
do
    if [[ ${#aline} == 30 ]]; then                                                                                                                                                         
        #do something
    fi
done

这是在&#34;参数扩展&#34;下的bash man pages中记录的。部分。

EDIT =此解决方案仅限zsh

答案 2 :(得分:0)

这是算法