sed linuxを使用してファイルの値を更新する方法

sed linuxを使用してファイルの値を更新する方法

「root Soft nproc」に対応する値を180000から40000に変更する必要があります。サンプルファイルは次のとおりです。これを1行で簡単に行う方法はありますか?

map   hard   nofile    1000
root    soft    nofile    1000
root    hard   nofile    1010
map   soft    nproc    1200
map   hard   nproc    1200
root    soft    nproc    180000
root    hard   nproc    180000

答え1

あなたはそれを使用することができます

sed 's/^\(root\s*soft\s*nproc\s*\)180000$/\140000/' file > newfile

代替価値所定の位置にオプションの使用-i

sed -i 's/^\(root\s*soft\s*nproc\s*\)180000/\140000/' file

構文は次のとおりです。sed 's/replace_old/with_new/' file

  • ^行の先頭に一致します。
  • \s*スペース文字(スペースとタブ)の数に関係なく一致します。
  • $行末の一致

内部部分は\(...\)グループとしてキャプチャされ、キャプチャグループの逆参照である下の\140000部分に置き換えられます。\1

関連情報