使用awk和sed替换文件的最后第三行
我需要找到文件的最后第三行,如果是“}”,我应该用“}”替换它 我想到的是awk和sed 这将查找文件的最后第三行使用awk和sed替换文件的最后第三行,sed,awk,Sed,Awk,我需要找到文件的最后第三行,如果是“}”,我应该用“}”替换它 我想到的是awk和sed 这将查找文件的最后第三行 PATTERN=$(awk '{v[c++]=$0}END{print v[c-3]}' $file) 我想用 sed -i 's/$PATTERN/}/' $file 但这是错误的 不知道如何继续这个awk应该会这样做(最后第三行更多已清理) awk'{v[++c]=$0}END{for(i=1;i这个awk应该可以(最后第三行more被清理) awk'{v[++c]
PATTERN=$(awk '{v[c++]=$0}END{print v[c-3]}' $file)
我想用
sed -i 's/$PATTERN/}/' $file
但这是错误的
不知道如何继续这个
awk
应该会这样做(最后第三行更多
已清理)
awk'{v[++c]=$0}END{for(i=1;i这个awk
应该可以(最后第三行more
被清理)
awk'{v[++c]=$0}END{for(i=1;i)
我需要找到文件的最后第三行,如果是“}”,我应该
将其替换为“}”
使用tac
和sed
:
tac filename | sed '3s/^};$/}/' | tac
在MacOS上,您可以说:
sed '1!G;h;$!d' filename | sed '3s/^};$/}/' | sed '1!G;h;$!d'
我需要找到文件的最后第三行,如果是“}”,我应该
将其替换为“}”
使用tac
和sed
:
tac filename | sed '3s/^};$/}/' | tac
在MacOS上,您可以说:
sed '1!G;h;$!d' filename | sed '3s/^};$/}/' | sed '1!G;h;$!d'
@JotnBut files remaines unchanged要更改原始文件,请执行以下操作:awk(某些命令)file>tmp&&mv tmp file
这将写回对文件的更改
有些事情是错误的,您可能会在示例中看到,文件的第一行丢失了!很好的捕获。我刚刚复制了原始文件,它在使用增量变量后有c++
,因此数组将从0
开始,更改为++c
PS,唯一使用单个命令的解决方案,awk
:)@JotnBut files remaines未更改要更改原始文件,请执行:awk(某些命令)file>tmp&&mv tmp file
这将写回对文件的更改
有些事情是错误的,您可能会在示例中看到,文件的第一行丢失了!很好的捕获。我刚刚复制了原始文件,它在使用增量变量后有c++
,因此数组将从0
开始,更改为++c
PS,唯一使用单个命令的解决方案,awk
:)我在mac上运行,bash抱怨找不到tac命令我在mac上运行,bash抱怨找不到tac命令