如何在不知道文件的行数的情况下将文本文件的最后n行移动到顶部?是否可以通过单个命令行(例如,以sed
来实现)?
发件人:
...
a
b
c
d
收件人:
a
b
c
d
...
答案 0 :(得分:3)
显示最后n行,然后显示其余:
tail -n 4 file; head -n -4 file
来自man head
:
-n,--lines = [-] NUM
打印前NUM行,而不是前10行;以'-'开头,则打印每个文件中除最后NUM行以外的所有行
tail -n 4
将显示文件的最后4行。
如果您希望通过管道传输这些数据,则需要像这样将它们放在一起:
( tail -n 4 file; head -n -4 file ) | wc
或者也许您可以使用vim内联编辑文件:
vim +'$-3,$m0' +'wq' file
vim的+
选项将在其后运行(Ex)命令。 $-3,$m0
表示将最后一行和最后一行之上的三行之间的行移动到文件的开头。请注意,+
和命令之间不应有空格。
或在vim普通模式下使用命令:
vim +'norm G3kdGggPZZ' file
G
转到文件末尾; 3k
向上移动3行; dG
删除到文件尾; gg
返回文件顶部; P
将已删除的行粘贴到该行之前; ZZ
保存并退出。
答案 1 :(得分:0)
答案 2 :(得分:0)
与class Main {
public static void main(String[] args) {
String[] playersArray = {"Celine", "Amelia", "Olivia"};
int[] powerArray = {4, 2, 10};
//unsorted array of power
int[] powerIndexes = {0, 1, 2};
int[] pointsArray = new int[3];
powerIndexes(powerArray, powerIndexes);
assignPoints(powerIndexes, pointsArray);
System.out.println("Round 1 : ");
showResults(playersArray, powerArray, pointsArray);
}
//Change power indexes based on power
public static void powerIndexes(int[] powerArray, int[] powerIndexes) {
for (int i = 0; i < powerArray.length; i++) {
for (int j = 0; j < powerArray.length; j++) {
if (powerArray[i] < powerArray[j]) {
int temp = powerIndexes[i];
powerIndexes[i] = powerIndexes[j];
powerIndexes[j] = temp;
}
}
}
}
public static void assignPoints(int[] powerIndexes, int[] pointsArray) {
for (int i = 0; i < powerIndexes.length; i++) {
pointsArray[i] = powerIndexes[i] * 2 + 2;
}
}
public static void showResults(String[] playersArray, int[] powerArray, int[] pointsArray) {
for (int i = 0; i < playersArray.length; i++) {
System.out.println("Joueur " + playersArray[i] + " | Puissances " + powerArray[i] + " | Points " + pointsArray[i]);
}
}
}
将最后ed
行移动到文件顶部。
30
在文件顶部移动10到50行。
printf '%s\n' '30,$m0' ,p Q | ed -s file.txt
将1到10移动到最后一行/缓冲区。
printf '%s\n' '10,50m0' ,p Q | ed -s file.txt
将40/80移动到最后一行/缓冲区
printf '%s\n' '1,10m$' ,p Q | ed -s file.txt
行地址printf '%s\n' '40,80m$' ,p Q | ed -s file.txt
是第一个,0
表示移动
m
是缓冲区/文件的最后一行。
将$
更改为Q
以实际编辑w