Mac端末を使用してファイル名を含むテキストファイルに行を挿入する


0

私はMac上でTerminalを使用しています、そして私はそれぞれがこのようなデータを含む一連のテキストファイルを持っています:

300.50 253.50
301.00 156.26
301.50 191.57

最初の列が 'Wavelength'、2番目の列がファイル名でラベル付けされている列にヘッダーを挿入します(スペースで区切られている限りスペースは関係ありません)。

Wavelength Filename
300.50 253.50
301.00 156.26
301.50 191.57

それぞれのファイルに 'Wavelength'を挿入するループがありますが、うまく機能しますが、ファイル名を追加すると問題が発生します。これがコードです:

for file in *.txt
do
  ed -s $file < <(printf '%s\n' 1i "Wavelength" . wq)   
done

私はこれらの行を変更されたセクションを太字で試してみました。

  • -ed -s $ file&lt; &lt;(printf '%s \ n' 1i "波長" &amp;&amp; $ file 。 wq)
  • -ed -s $ file&lt; &lt;(printf '%s \ n' 1i "波長" &amp;&amp; printf $ファイル 。 wq)
  • -ed -s $ file&lt; &lt;(printf '%s \ n' 1i "波長" &amp;&amp; echo $ file 。 wq)

これをどうやってやるの?ファイル名を変数として保存して印刷する必要がありますか?それとも、ファイル名を文字列に変換するために修飾子を使うことができますか?

あなたが何かについて考えることができるかどうか私に知らせてください。前もって感謝します


私はあなたのやり方をする方法がわかりません。しかし、次のようにすることもできます。echo "filename波長"&gt; a.outそれからcat filename&gt;&gt; a.out、次にfilenameをラベル付きfilenameに置き換えて、a.out filenameを移動します。
jmh 24 8月 2017 21:31

回答:


0

以下はどうですか?

for file in *.txt
do
  ed -s $file < <(printf '%s\n' 1i "Wavelength $file" . wq)
done

ところで、 "。wq"と "1i"は何をするのですか?私は前にそれを見たことがない...

Sebastian Breit 24 8月 2017 22:05
ソース

これは完璧に機能しました!ありがとうございました!!!その期間は追加されるテキストの終わりを示すためのもので、wqはファイルを書き込み、終了します。 1は行番号、iはinsertを表します
stitchineer 25 8月 2017 00:26

そうですか。説明をありがとう
Sebastian Breit 25 8月 2017 15:57
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.