我需要找到文件的最后第三行,如果是“},”我应该用“}”替换它
我在考虑 awk 和 sed 这将找到文件的最后第三行
PATTERN=$(awk '{v[c++]=$0}END{print v[c-3]}' $file)
我想用
sed -i 's/$PATTERN/}/' $file
但这是错误的 不知道如何继续
答案 0 :(得分:4)
我需要找到文件的最后第三行,如果是“},”我应该 将其替换为“}”
使用tac
和sed
:
tac filename | sed '3s/^};$/}/' | tac
在MacOS上,您可以说:
sed '1!G;h;$!d' filename | sed '3s/^};$/}/' | sed '1!G;h;$!d'
答案 1 :(得分: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