1行目の最初のスラッシュ "/"より前のすべての内容を出力します。

1行目の最初のスラッシュ "/"より前のすべての内容を出力します。

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

関連情報