ファイルの内容は以下のようになります
abc.w.f.com
asdff.d.f.com
..........
ドットの後のすべてを削除し、変更は同じファイルに上書きする必要があります
abc
asdff
以下を試しましたが、別のファイルへのリダイレクトが必要になり、それは望ましくありません
sed "s/\..*//" Filename > File2
答え1
使用-i
:
sed -i 's/\..*$//' Filename
-i[サフィックス], --in-place[=サフィックス]
ファイルをその場で編集します(SUFFIX が指定されている場合はバックアップを作成します)
答え2
同じファイルにリダイレクトすることはできません。 の明らかな問題は、 がファイルを読み取る前に、sed "s/\..*//" Filename > Filename
シェルが書き込み用に開かれ (上書きされ) てしまうことです。Filename
sed
出力を別のファイルにリダイレクトし、元のファイルを削除して、新しく作成したファイルの名前を元のファイルと同じ名前に変更する必要があります。Sed、Perl、AWK でこれを実行できます。
sed -i
perl -i
awk -i inplace
あるいは、以下を使用することもできますsponge
:
sed "s/\..*//" Filename | sponge Filename
sponge
標準入力から受信した内容をバッファリングし続け、その後に書き込みますFilename
。