![输出一行中第一个斜杠“/”之前的所有内容](https://linux22.com/image/216744/%E8%BE%93%E5%87%BA%E4%B8%80%E8%A1%8C%E4%B8%AD%E7%AC%AC%E4%B8%80%E4%B8%AA%E6%96%9C%E6%9D%A0%E2%80%9C%2F%E2%80%9D%E4%B9%8B%E5%89%8D%E7%9A%84%E6%89%80%E6%9C%89%E5%86%85%E5%AE%B9.png)
我有一组 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