2

私は以下の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ソリューションも実現可能です

4

3 に答える 3

0

次のようなことを試すことができます:

sed '$d' yourfile | sed 's/cool/hot/g' > newfile
tail -1 yourfile >> newfile

これにより、最初にファイルの最後の行以外のすべてが置換され、次に元のファイルの最後の行が追加されます。

于 2010-07-22T06:33:06.110 に答える
0
awk -vvar="hot" '{gsub("cool",hot,t);print t}{t=$0}END{print}' file
于 2010-07-22T08:47:31.670 に答える
0

行数をパラメーターとして渡すこともできます。

gawk -v var=hot -v lines=$(wc -l < test.txt) '
    NR != lines {gsub(/cool/, var)} 
    {print}
' test.txt
于 2010-07-22T16:54:27.520 に答える