作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有几个具有不同行号的文本文件,我必须在所有这些文件中删除倒数第三行。这是一个示例文件:
bear
horse
window
potato
berry
cup
此文件的预期结果:
bear
horse
window
berry
cup
我们可以删除文件的倒数第三行吗:
> sed -i 'N;$!P;D' output1.txt
最佳答案
与 tac
+ awk
解决方案,请您尝试以下操作。刚设置line
awk
的变量到你想跳过的行(从底部)。
tac Input_file | awk -v line="3" 'line==FNR{next} 1' | tac
说明:使用
tac
将读取 Input_file 反向(从底行到第一行),将其输出传递给
awk
命令,然后检查条件是否 line 等于 line(我们要跳过)然后不打印该行,1 将打印其他行。
awk
+
wc
解决方案,请尝试以下操作。
awk -v lines="$(wc -l < Input_file)" -v skipLine="3" 'FNR!=(lines-skipLine+1)' Input_file
说明:开始
awk
在这里编程并创建一个变量
lines
其中包含 Input_file 中存在的总行数。变量
skipLine
有我们想要从 Input_file 底部跳过的行号。然后在主程序检查条件,如果当前行不等于
lines-skipLine+1
然后打印线条。
awk -v line=3 '{a[NR]=$0} END{for (i=1;i<=NR;i++) if (i != (NR-line)) print a[i]}' Input_file
说明:为第三个解决方案添加详细说明。
awk -v line=3 ' ##Starting awk program from here, setting awk variable line to 3(line which OP wants to skip from bottom)
{
a[NR]=$0 ##Creating array a with index of NR and value is current line.
}
END{ ##Starting END block of this program from here.
for(i=1;i<=NR;i++){ ##Starting for loop till value of NR here.
if(i != (NR-line)){ ##Checking condition if i is NOT equal to NR-line then do following.
print a[i] ##Printing a with index i here.
}
}
}
' Input_file ##Mentioning Input_file name here.
关于awk - 使用 sed 或 awk 删除倒数第三行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64046478/
我是一名优秀的程序员,十分优秀!