美好的一天,
我想知道如何移动一条线。两个都是同一个文件。
-v var1="$Line1" -v var2="$Line2"
。$Line2
之后移动$Line1
,始终$Line1 < $Line2
。预期输入
Line1=2
Line2=5
NR $0
1 a
2 b
3 c
4 d
5 e
6 f
预期输出
NR $0
1 a
2 b
5 e
3 c
4 d
6 f
提前感谢任何线索
答案 0 :(得分:2)
假设Line1位于Line2之前,这应该可以工作:
Line1=2
Line2=5
awk -v var1="$Line1" -v var2="$Line2" \
'{ if ((NR <= var1) || (NR > var2)) { print $0; }
else if (NR == var2) { print $0 buffer; }
else { buffer=(buffer "\n" $0); }
}' inputfile
正常打印插入点之前或提取点之后的所有行。达到提取点时,将打印该行以及缓冲区中累积的所有内容。在插入点和提取点之间,行被添加到缓冲区而不是立即打印出来。