私は以下のawkライナーを試しました(Windowsコマンドプロンプトで):正しく機能していません
gawk -v var="hot" "{ if(!NR){gsub(/cool/,var,$0) ;print} else{print}}" awk_test
入力ファイルは以下のとおりです
this is a cool jack
this nota cool kack
this obviously a cool jack
UNIXソリューションも実現可能です
次のようなことを試すことができます:
sed '$d' yourfile | sed 's/cool/hot/g' > newfile
tail -1 yourfile >> newfile
これにより、最初にファイルの最後の行以外のすべてが置換され、次に元のファイルの最後の行が追加されます。
awk -vvar="hot" '{gsub("cool",hot,t);print t}{t=$0}END{print}' file
行数をパラメーターとして渡すこともできます。
gawk -v var=hot -v lines=$(wc -l < test.txt) '
NR != lines {gsub(/cool/, var)}
{print}
' test.txt