如何获取输入文本文件的第一行,同时从文本文件中删除该行

如何获取输入文本文件的第一行,同时从文本文件中删除该行

如何获取输入文本文件的第一行,同时从文本文件中删除该行?

/myPathToTheFile.txt如果我有一个这样的文本文件

► put returns between paragraphs
► for linebreak add 2 spaces at end
► _italic_ or **bold**

我想将此行作为输出

► put returns between paragraphs

我的文本文件现在应该是这样的

► for linebreak add 2 spaces at end
► _italic_ or **bold*

答案1

ex -s /myPathToTheFile.txt <<\EX
1p
1d
wq
EX

或者

ex -s /myPathToTheFile.txt <<< 1p$'\n'1d$'\n'wq

或者,减少输入:

ed -s /myPathToTheFile.txt <<< $'1\nd\nwq'

答案2

至少对于 GNU sed:

$ cat file
► put returns between paragraphs
► for linebreak add 2 spaces at end
► _italic_ or **bold**

$ sed -i '1{
w /dev/stdout
d}' file
► put returns between paragraphs

$ cat file
► for linebreak add 2 spaces at end
► _italic_ or **bold**

使用 GNU sed 可以将其写为一行代码

sed -i -e '1 {w /dev/stdout' -e 'd}' file

答案3

假设您要求一个 shell 脚本,这将执行您所要求的操作:

NAME=$1
head -n 1 $NAME
sed -i '1d' $NAME

答案4

您可以使用head,tailmv

显示第一行:

head -1 myPathToTheFile.txt

保留最后 ( +2) 行:

tail -n +2 myPathToTheFile.txt > file.tmp && mv file.tmp myPathToTheFile.txt

相关内容