我有一组 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:
$ grep -oE '^[^/]+/' foo.txt
输出:
apple.com/
t1.msn.com/
happy.net/
为了满足所有要求:
grep -oE '^[^/]+/' foo.txt | tee foo_filter.txt