変数に格納されている行の先頭にタブ文字を追加する

変数に格納されている行の先頭にタブ文字を追加する

クライアントから受け取った.zipファイルを処理するスクリプトを作成しています。作業をしてみると、受信した.zipファイルの内容を確認手段としてログファイルにリストしたい場合が多いです。テストファイルからファイルリストを抽出して、ログファイルにファイルリストを挿入できました。

これで、ログファイルから抽出されたファイル名の前に改行とタブを追加してログファイルをクリーンアップしようとしています。一番近くにいたコメントしました。次の例では、1行の出力にのみタブを追加します。次にSEDの使用を検討しましたが、SEDに関する知識が不足しており、ログファイルに空白行のみが表示されました。

    log_message "-------- Extracting files"
    zipflist="`unzip -Z1 $file`"
    log_message "Files found in received zip file..."
#    log_message $'\n\t\t\t'"$zipflist"
    log_message `sed '1 s/^/$'\t'"$zipflist"/' `

"log_message"関数は、日付/時刻の前に付けられた文字列をファイルに渡します。

これは私が今まで得た最高の結果です。

2023-12-29 09:31:44: Files found in received zip file...
2023-12-29 09:31:44:
                        loremipsum.pdf
loremipsum.txt
dummy_report.xml

出力が次のようになります。

2023-12-29 09:31:44: Files found in received zip file...
2023-12-29 09:31:44:
                        loremipsum.pdf
                        loremipsum.txt
                        dummy_report.xml

RHELのSED、tr、またはその他の基本ユーティリティを使用してこれを行う方法はありますか?会社が承認していないものはインストールできないため、持っているものを使用することをお勧めします。 (承認の手間を軽減します)

ベストアンサー1

% str=$'foo\nbar\ndoo\n'
% printf "%s" "$str" |sed -e $'s/^/\t/'
    foo
    bar
    doo

(リストで他のタスクを実行する予定がない場合は、unzip | sedvarを使用せずに直接実行できます。)

おすすめ記事