ファイルの最初の行を削除して変更を維持するにはどうすればよいですか?
これを試しましたが、ファイルの内容全体が削除されました。
$sed 1d file.txt > file.txt
ベストアンサー1
もう1つの非常に簡単なオプションは、最初の行を除くすべての項目を「追跡」することです(これはファイルヘッダーを削除する簡単な方法であることがよくあります)。
# -n +2 : start at line 2 of the file.
tail -n +2 file.txt > file.stdout
@Evan Teitelmanをフォローすると、次のことができます。
tail -n +2 file.txt | sponge file.txt
一時ファイルを避けるため。別のオプションは次のとおりです。
echo "$(tail -n +2 file.txt)" > file.txt
など。最後の項目をテストします。
[user@work ~]$ cat file.txt
line 1
line 2
line 3
line 4
line 5
[user@work ~]$ echo "$(tail -n +2 file.txt)" > file.txt
[user@work ~]$ cat file.txt
line 2
line 3
line 4
line 5
[user@work ~]$
このように、改行がありません(下記@1_CRの説明に従って)。以下を試してください。
printf "%s\n\n" "$(tail -n +2 file.txt)" > file.txt
[user@work ~]$ cat file.txt
line 1
line 2
line 3
line 4
line 5
[user@work ~]$ printf '%s\n\n' "$(tail -n +2 file.txt)" > file.txt
[user@work ~]$ cat file.txt
line 2
line 3
line 4
line 5
[user@work ~]$
sedに戻り、次のことを試してください。
printf '%s\n\n' "$(sed '1d' file.txt)" > file.txt
おそらく
echo -e "$(sed '1d' file.txt)\n" > file.txt
副作用を避けるため。