0

我需要找到文件的最后第三行,如果是“}”,我应该用“}”替换它

我在想awksed 这找到文件的最后第三行

 PATTERN=$(awk '{v[c++]=$0}END{print v[c-3]}' $file)

我想用

 sed -i 's/$PATTERN/}/' $file

但这是错误的 不知道如何进行

4

2 回答 2

4

我需要找到文件的最后第三行,如果是“}”,我应该用“}”替换它

使用tacsed

tac filename | sed '3s/^};$/}/' | tac

在 MacOS 上,您可以说:

sed '1!G;h;$!d' filename | sed '3s/^};$/}/' | sed '1!G;h;$!d'
于 2013-11-06T09:48:20.620 回答
0

awk应该这样做(最后第三行more已清理)

cat file
one
two },
three
four
more }, test }, hi
five },
yes

awk '{v[++c]=$0}END {for (i=1;i<=NR;i++) {if (v[c-3]~"},") gsub(/},/,"}",v[c-3]);print v[i]}}' t
one
two },
three
four
more }, test }, hi
five },
yes
于 2013-11-06T09:29:37.490 回答