我尝试了下面的 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