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

AwkまたはSedを使用して、8未満の文の単語または数字を置き換えますか?

以下の例では、列9の値が8未満の場合はそれを置き換える必要があります。それ以外の場合は、sedまたはawk関数を使用して終了または無視します。

) in datadbs extent size 16 next size 4 lock mode row;

以下のawk関数を使用すると、9列目に必要な値のみが出力されますが、それでも文の構造を維持したいと思います。

echo ") in datadbs extent size 16 next size 4 lock mode row;" | 
 awk '{if ($9 < 8 ) print 8;}'

出力:

8

私が欲しいのは以下です:

) in datadbs extent size 16 next size 8 lock mode row;

承認された回答:

awkを知らなくても パラメータを変更してすべてを印刷することをお勧めします:

echo ") in datadbs extent size 16 next size 4 lock mode row;" | 
  awk '{if ($9 < 8 ) $9 = 8; print;}'

Linux
  1. LinuxでSed、ex、perlコマンドを使用してテキストを検索および置換する

  2. Sedを使用してパターン範囲間の行を検索および置換

  3. Sed、Awk、またはGrepを使用したマルチラインパターンマッチ?

  1. bashで単語を別の単語に置き換える

  2. sed を使用して空行を削除する

  3. sedを使用して、ファイル内の行の範囲内のテキストを検索して置換します

  1. Linuxでsedを使用してテキストファイルを検索および置換する

  2. SED を使用した単語の最初の文字の大文字化

  3. grep と awk の使用