Использование терминала Mac для вставки строки в текстовый файл, содержащий имя файла

0

Я использую терминал на Mac, и у меня есть ряд текстовых файлов, каждый из которых содержит данные, подобные этим:

300.50 253.50
301.00 156.26
301.50 191.57

Я хочу вставить заголовок для столбцов, где первый помечен как «Длина волны», а второй помечен именем файла, чтобы он выглядел так (интервал не имеет значения, если он обозначен пробелом):

Wavelength Filename
300.50 253.50
301.00 156.26
301.50 191.57

У меня есть цикл, который вставляет «Длина волны» в каждый файл, и он прекрасно работает, но добавление имени файла вызывает у меня некоторые проблемы. Вот код:

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

Я пробовал эти строки с измененным разделом, выделенным жирным шрифтом:

  • -ed -s $ file <<(printf '% s \ n' 1i "Длина волны" && $ file . wq)
  • -ed -s $ file <<(printf '% s \ n' 1i "Длина волны" && printf $ file . wq)
  • -ed -s $ file <<(printf '% s \ n' 1i "Длина волны" && echo $ file . wq)

Как мне это сделать? Нужно ли сохранять имя файла как переменную и печатать переменную? Или я могу использовать модификатор для преобразования имени файла в строку?

Пожалуйста, дайте мне знать, если вы можете думать о чем-либо. заранее спасибо

stitchineer
источник
Я не знаю, как сделать это по-своему. Но вы могли бы сделать что-то вроде: echo "имя_файла волны"> a.out, затем имя файла cat >> a.out, затем переместить имя файла a.out, заменив имя файла на имя файла.
JMH

Ответы:

0

Как насчет следующего:

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

Кстати, что делают ". wq" и "1i"? Я не видел этого раньше ...

Себастьян Брейт
источник
Это сработало отлично! Спасибо!!! Точка должна означать конец добавляемого текста, wq записывает и выходит из файла 1i вставляет строку перед первой строкой. 1 - номер строки, я обозначаю вставку
stitchineer