特定字符串后打印

时间:2017-09-20 16:41:21

标签: sed grep

我有一个文本文件,其中包含以下文本行

AAA http://hello.world.com/12345/11.*aa*
AAB AAC http://hello.world.com/12346/11.*aa*

如何打印以AAA开头的网址?

cat file.txt | tr -d ' ' | grep -i 'AAA' | cut -f2 -d':'

上面只显示//hello.world.com/12345/11.*aa*,但当我扩展变量时,我当然可以编码 http:,这只是一种混乱的做法。

5 个答案:

答案 0 :(得分:2)

$ sed -n 's/^AAA *//p' file
http://hello.world.com/12345/11.*aa*

答案 1 :(得分:1)

只需 awk (假设 url 是每行的最后一项):

awk '/^AAA/{ print $NF }' file.txt

答案 2 :(得分:0)

假设标准是URL总是在行的最后一个空格之后(至少对于以AAA开头的行):

$: echo "AAA http://hello.world.com/12345/11.*aa*" | grep -i "^AAA" | sed 's/^.* //g'
http://hello.world.com/12345/11.*aa*

sed位匹配从行开头到最后一个空格的所有文本并将其删除。

回声只是我测试过的一个例子。你会用:

grep -i "^AAA" file.txt | sed 's/^.* //g'

答案 3 :(得分:0)

grep -oP "^AAA.*\Khttp.*" file

输出:

http://hello.world.com/12345/11.*aa*

答案 4 :(得分:0)

cat file.txt | grep "^AAA" | rev | cut -d ' ' -f1 | rev

输出:http://hello.world.com/12345/11.*aa*

<强>详细信息:

cat file.txt:打印文件内容。

grep "^AAA":只保留&#34; AAA&#34;。

rev:反转每行的字符。

cut -d ' ' -f1:使用空格作为分隔符拆分每一行并保留第一列。

rev:反转每行的字符。