输出一行中第一个斜杠“/”之前的所有内容

输出一行中第一个斜杠“/”之前的所有内容

我有一组 URL,并且我实际上只对第一个 URL 之前的任何内容感兴趣/

如何将此信息捕获到文本文件中?

输入 (foo.txt):

apple.com/nothing.js  
t1.msn.com/cookie=22  
happy.net/whatever

输出(重定向到文件:)foo_filter.txt

apple.com/  
t1.msn.com/  
happy.net/  

答案1

$ awk 'sub("/.*","/")' foo.txt
apple.com/
t1.msn.com/
happy.net/

答案2

使用Miller

mlr --nidx --ifs '/' -N cut -f 1 file

或使用 GNU datamash

datamash dirname 1 <file

答案3

如果你不需要尾部斜杠,这非常简单

cut -d/ -f1 foo.txt
awk -F/ '{print $1}' foo.txt
sed 's!/.*!!' foo.txt

如果您确实想要尾随斜杠,那么

awk -F/ '{print $1 "/"}' foo.txt
sed 's!/.*!/!' foo.txt

所有这些都会写到标准输出(您的屏幕)以便您可以立即看到结果。要将它们重定向到您的目标文件,请>foo_filter.txt在命令末尾使用。例如,

awk -F/ '{print $1 "/"}' foo.txt >foo_filter.txt

答案4

只要:

$ grep -oE '^[^/]+/' foo.txt

输出:

apple.com/
t1.msn.com/
happy.net/

为了满足所有要求:

grep -oE '^[^/]+/' foo.txt | tee foo_filter.txt

相关内容