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

sta*_*cko 11 text-processing

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

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

? put returns between paragraphs
? for linebreak add 2 spaces at end
? _italic_ or **bold**
Run Code Online (Sandbox Code Playgroud)

我想将此行作为输出

? put returns between paragraphs
Run Code Online (Sandbox Code Playgroud)

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

? for linebreak add 2 spaces at end
? _italic_ or **bold*
Run Code Online (Sandbox Code Playgroud)

Jef*_*ler 13

ex -s /myPathToTheFile.txt <<\EX
1p
1d
wq
EX
Run Code Online (Sandbox Code Playgroud)

或者

ex -s /myPathToTheFile.txt <<< 1p$'\n'1d$'\n'wq
Run Code Online (Sandbox Code Playgroud)

或者,少打字:

ed -s /myPathToTheFile.txt <<< $'1\nd\nwq'
Run Code Online (Sandbox Code Playgroud)


ste*_*ver 10

至少对于 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**
Run Code Online (Sandbox Code Playgroud)

使用 GNU sed 可以将其编写为单行

sed -i -e '1 {w /dev/stdout' -e 'd}' file
Run Code Online (Sandbox Code Playgroud)


Ste*_*uch 6

假设您要求使用 shell 脚本,这将执行您的要求:

NAME=$1
head -n 1 $NAME
sed -i '1d' $NAME
Run Code Online (Sandbox Code Playgroud)


小智 5

sed -ne '1p' -e '1!s/^//w temp_file' yourfile && mv temp_file yourfile
Run Code Online (Sandbox Code Playgroud)