awk заменяет текст, но не для последней строки - PullRequest
2 голосов
/ 22 июля 2010

я попробовал вкладыш 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

Ответы [ 3 ]

0 голосов
/ 22 июля 2010
awk -vvar="hot" '{gsub("cool",hot,t);print t}{t=$0}END{print}' file
0 голосов
/ 22 июля 2010

Вы также можете передать количество строк в качестве параметра:

gawk -v var=hot -v lines=$(wc -l < test.txt) '
    NR != lines {gsub(/cool/, var)} 
    {print}
' test.txt
0 голосов
/ 22 июля 2010

Вы можете попробовать что-то вроде:

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

это должно сделать замену всего, кроме последней строки файла, а затем добавить последнюю строку исходного файла.

...