私は多くのIPアドレスのリスト(主にIPv4、いくつかのIPv6)の後にスペース、ドメイン名、別のスペースがあり、「www」を含む同じドメイン名があります。その前に。各インスタンスは独自の行にあります。リストは次のとおりです(しかし、はるかに大きい):
23.212.109.137 at.ask.com www.at.ask.com
216.58.206.74 maps.googleapis.com www.maps.googleapis.com
2400:cb00:2048:1::6812:32a5 litscape.com www.litscape.com
104.16.244.35 loc.gov www.loc.gov
216.70.104.235 mbu.edu www.mbu.edu
2つの検索と置換コマンドが気になります。各コマンドは、最後のコマンドの後に別のテキストファイルを生成します。
1)最初のコマンドは見つけて置き換える必要があります。すべて「www」の前に。 「http://」を使用すると、2番目のテキストファイルの行が次のように表示されます。
http://www.at.ask.com
http://www.maps.googleapis.com
http://www.litscape.com
http://www.loc.gov
http://www.mbu.edu
2)2番目のコマンドは、「」のすべてのインスタンスを見つけて置き換える必要があります。http://www."を2番目のテキストファイルに追加して、3番目のテキストファイルの行が次のようになります。
at.ask.com
maps.googleapis.com
litscape.com
loc.gov
mbu.edu
ありがとうございます。
答え1
シングルアッ注文する:
awk '{ print $2 > "domains.txt"; print "http://"$3 > "domains_http.txt" }' file
結果:
> cat domains_http.txt
http://www.at.ask.com
http://www.maps.googleapis.com
http://www.litscape.com
http://www.loc.gov
http://www.mbu.edu
> cat domains.txt
at.ask.com
maps.googleapis.com
litscape.com
loc.gov
mbu.edu
答え2
2番目は最も簡単です。
$ cut -d ' ' -f 2 file.in
スペースを区切り文字として使用cut
し、2番目の列を切り捨てます。
これにより、awk
次の2つの作業を簡単に実行できます。
$ awk '{ print $2 }' file.in
これはデフォルトでコマンドと同じことを行いますcut
。
$ awk '{ print "http://" $3 }' file.in
これは3番目の列を取得し、http://
出力する前に前に追加します。
答え3
sedを使用してください:
sed 's#.*\(www.*\)#http://\1#' source_file > dest_file1
sed 's#.*www\.\(.*\)#\1#' dest_file1 > dest_file2
説明する:
最初の要件では、すべての項目をグループ化www
し、そのグループに属していないすべての項目を置き換えますhttp://
。 2番目のファイルは似ていますが、今後もグループ化されています。www.
ご希望の方は参考にしてください注文するこれらのタスクを実行するには、いつでもそのタスクをカスタムコマンドでエイリアスを指定できます。