あなたが具体的にについて尋ねたのでawk
、ここにもう一つあります。
awk '{ gsub(/1\./,"") }1' input.txt
awk
チュートリアルでわかるように、プログラムの一般的な形式は「awk
条件{アクション}」のシーケンスです。アクションがない場合、デフォルトのアクションは印刷です。条件がない場合、アクションは無条件に実行されます。このプログラムは、これらの特殊なケースの両方を使用します。
最初の部分は条件のないアクションです。つまり、すべての行に対して実行されます。アクションは、正規表現のすべての出現箇所/1\./
を何も置き換えないことです。したがって、これにより「1」がトリミングされます。(コンテキストに関係なく)行から。
2番目の部分は、アクションのない条件です。つまり、条件がtrueの場合に出力され、条件は常にtrueです。これは、「完了しました。現在の内容をすべて印刷する」の一般的なイディオムです。これは単純に定数で構成されます1
(条件として使用される場合、単純に「真」を意味します)。
これは、いくつかの方法で再定式化することができます。たとえば、印刷を最初のアクションに組み込むことができます。
awk '{ gsub(/1\./,""); print }' input.txt
おそらく、整数部分、つまりピリオド記号の前の任意の数値に置き換えたいと思うでしょう。その正規表現は次のようになります/[0-9]+\./
。
gsub
はGNU拡張機能であるため、レガシー構文sub
への移植性が必要な場合は、またはある種のループに置き換えることをお勧めします。awk