GNU/Linux >> Linux の 問題 >  >> Linux

その行に複数の期間がある場合は、最初の期間まですべてを削除し、ファイル全体に対してこれを実行しますか?

sed その行に複数のピリオドがある場合は、最初のピリオドまですべてを削除し、ファイル全体に対してこれを実行します。

sedの前:

akamai.com
cdnjs.cloudflare.com
com.cdn.cloudflare.net

sed後:

akamai.com
cloudflare.com
cdn.cloudflare.net

承認された回答:

$ sed '/\..*\./s/^[^.]*\.//' file
akamai.com
cloudflare.com
cdn.cloudflare.net

sed スクリプトは最初に、正規表現\..*\.を使用して、少なくとも2つのドットを含む行を照合します。 ([.].*[.]と書かれている可能性もあります )。これに一致する行については、最初のドットまでのすべてを削除する置換が実行されます。

awkを使用する 、上記と比較してやや長めです:

$ awk -F '.' -vOFS='.' 'NF > 2 { n=split($0, a); $0=""; for (i=2;i<=n;++i) $(NF+1)=a[i] } 1' file
akamai.com
cloudflare.com
cdn.cloudflare.net

ここでは、ドットで区切られたフィールドが3つ以上ある場合は常に、現在の行をドットで分割し、最初のフィールドをスキップして、そこから現在のレコードを再作成します。末尾の1 最後に、すべての行(変更されているかどうかに関係なく)が印刷されます。

短いawk sedと同じ方法で 解決策:

$ awk -F '.' 'NF > 2 { sub("^[^.]*\.", "") } 1' file
akamai.com
cloudflare.com
cdn.cloudflare.net

Linux
  1. ファイルの最初の行の前にテキストを挿入する方法は?

  2. Linux – 1つのコマンドラインでCat、Tar、Gzipを使用して.tar.gzファイルを解凍してアーカイブ解除しますか?

  3. 最初の行を除いて、ファイルから余分なヘッダー行を削除しますか?

  1. 起動時に最初のシェルがキーを要求するだけの方法でキーチェーンを実行するにはどうすればよいですか?

  2. ファイルを分割し、各部分の最初の行を保持する方法は?

  3. ファイル記述子とミューテックスの両方を待ちたいのですが、これを行うための推奨される方法は何ですか?

  1. 大きなファイルにSedとParallelを使用して、行を別のコンテンツに置き換えますか?

  2. ls -l の後の最初の行の合計は?

  3. 複数の引数の xargs 置換