如何获取输入文本文件的第一行,同时从文本文件中删除该行?
/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
,tail
和mv
:
显示第一行:
head -1 myPathToTheFile.txt
保留最后 ( +2
) 行:
tail -n +2 myPathToTheFile.txt > file.tmp && mv file.tmp myPathToTheFile.txt