我搜索了一段时间,但我最接近发现的是追加到最后一行。
我发现的一个例子是追加到最后一行
sed '$ e cat word.txt' test.txt
我最接近的是使用x
命令和sed
来到倒数第二行。
sed 'x;$ e cat word.txt' test.txt
但是,我想知道如何从最后一行的第3行,第4行等附加。
例如
WORD.TXT
lorem ipsum...
的test.txt
1
2
3
4
5
6
7
将word.txt
追加到test.txt
1
2
3
4
lorem ipsum...
5
6
7
我找到的唯一例子是从行的开头追加第n个,但不追溯到最后一行的第n个。
答案 0 :(得分:2)
使用head
和tail
:
{
head -n-3 text.txt
cat word.txt
tail -n3 text.txt
} > newfile.txt
答案 1 :(得分:1)
在GNU awk(ARGIND
变量)中:
$ awk -v nth=4 '
ARGIND==1 { s=s (s==""?"":ORS) $0; next }
ARGIND==2 { nr=NR; next }
ARGIND==3 && FNR==(nr-nth) { print s }
1' word test test
1
2
3
lorem ipsum...
4
5
6
7
它读取test
两次,第一次计算记录数。
答案 2 :(得分:0)
使用awk,您不需要在处理之前撤消文件:
awk -v last=3 -v toadd="$(<word.txt)" '
NR > last { print a[(NR-1) % last] }
{ a[(NR-1) % last] = $0 }
END{
print toadd
for(i=NR-last; i<NR; i++)
print a[i % last]
}' file
答案 3 :(得分:0)
使用awk
,您可以保存所有行,然后将其打印在END
块中
{ lines[NR] = $0 }
END{ for (i = 1; i <= NR; i++) {
if (NR-n + 1 == i)
print word;
print lines[i]
}
}
示例强>
$ awk -vn=3 -vword="$(cat word)" -f prog.awk file
1
2
3
4
lorem ipsum..
5
6
7