file.txtの各行の最初の文字の前にパスを追加し、これらの編集内容を含む同じファイルを保存するにはどうすればよいですか? [コピー]

file.txtの各行の最初の文字の前にパスを追加し、これらの編集内容を含む同じファイルを保存するにはどうすればよいですか? [コピー]

次の行を含むファイルがあります。

account_1
account_2 
account_3

各行の前にパスを追加し、次の更新/home/info/プログラムを使用して同じファイルを保存する必要がありました。

/home/info/account_1
/home/info/account_2 
/home/info/account_3

AIXでこの問題をどのように処理しますか?

ベストアンサー1

ファイルの各行の先頭に文字列を追加するには、次のようにします。

sed -i 's#^#/home/info/#' file

これにより、呼び出されたファイルの内部編集が実行され、各行の先頭にfile文字列が挿入されます。/home/info/

FreeBSDや派生製品(macOSなど)では代-i ''​​わりに使用する必要があります-i( "sed -i(所定の位置で編集)を使用して移植性を達成するには?")。

#代替テキストに含まれているため、ここでは式の区切り文字として使用されます。私たちも使えます。sed/

sed -i 's/^/\/home\/info\//' file

しかし、これは読み書きが少し難しいです(Wikipediaを参照:傾いたつまようじ症候群)。

いつものように走ってくださいsed いいえ-i正しい操作が行われていることを確認するには、まずこのオプションを選択してください。


sed-i内部編集をサポートしていないシステムの場合は、結果を一時ファイルに書き込み、元のファイルをそのファイルに置き換える必要があります。

sed 's#^#/home/info/#' <file >file.new &&
mv file.new file

sedコマンドが成功すると、元のファイルが変更されたファイルに置き換えられます。

所有権やファイル権限などのメタデータを保存する必要がある場合は、次の手順を実行します。

cp file file.tmp &&
sed 's#^#/home/info/#' <file.tmp >file &&
rm file.tmp

おすすめ記事