私は一連の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