次の行を含むファイルがあります。
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