我之前问过一个关于真正的行删除的问题,并得到了一些很好的答案,但我现在有兴趣知道如何从一个特定列中删除特定行号下方的所有行。所有其他列和行应保持不变。
作为奖励,您还如何将另一列粘贴/打印到特定的已删除空间中
例子 (列以制表符分隔) - 仅在第 1 列中删除第 2 行及其下方的所有行,然后向左移动一列,将第 2 行和第 3 列从第 2 行向下移动:
输入:
hunkey dorey pringle
jungley fevery jingles
freshly cutting jackle
Queen Kingly Squire
输出:
hunkey dorey pringle
fevery jingles
cutting jackle
Kingly Squire
答案1
awk
解决方案。
awk '{if(NR>1){$1="";sub(" ","")}}1'
答案2
sed 'N,$s/^[^ ]\+[ ]\+//'
其中 N 是失去第一列的第一行的行号。
答案3
使用 GNU sed :
sed '2,$ s/[^\t]*\t//' file
便携的 :
tab=$(printf '\t')
sed '2,$ s/[^'"$tab"']*'"$tab"'//' file
- 2、$从第二行到最后一行
- s/[^\t]*\t//将除制表符之外的任意字符替换为下一个制表符(第一个制表符)。