Как добавить номер строки, следуя вкладке в текстовый файл

Я попытался использовать

nl -ba -s '\t' full_media > full_media2 

Но он действительно не добавил вкладку, но добавил текст «\ t» после номера строки. Редактирование файла im является CSV-файлом, и здесь я пытаюсь добавить новый столбец в начало с id.

    One Solution collect form web for “Как добавить номер строки, следуя вкладке в текстовый файл”

    Если вы используете современную оболочку типа bash или zsh, используйте $ чтобы оболочка оценивала \t и заменяла ее фактической вкладкой:

     nl -ba -s $'\t' full_media > full_media2 

    Тем не менее, если вы изучите вывод, похоже, что разделитель по умолчанию – это вкладка:

     $ nl -ba -s $'\t' ~/at.sh | od -c 0000000 1 \tnohupsg $ nl -ba ~/at.sh | od -c 0000000 1 \tnohupsg 

    Действительно, разделителем по умолчанию является вкладка, как указано в POSIX. От man nl :

      -s sep Specify the characters used in separating the line number and the corresponding text line. The default sep shall be a <tab>. 

    Чтобы добавить столбец в CSV, попробуйте использовать Python:

     #! /usr/bin/env python2 from sys import stdin, stdout import csv csvin = csv.reader(stdin, delimiter='\t') csvout= csv.writer(stdout, delimiter='\t') count = 1 for row in csvin: csvout.writerow ([count] + row) count = count + 1 

    Сохраните его как скрипт (скажем nl.py ) и запустите:

     python2 nl.py < full_media > full_media2 
    Linux и Unix - лучшая ОС в мире.