Text-Processing
如何將行號添加到文本文件中
我嘗試使用
nl -ba -s '\t' full_media > full_media2
但它確實沒有添加選項卡,而是在行號後面添加了“\t”文本。我正在編輯的文件是一個 CSV 文件,在這裡我試圖在 id 開頭添加一個新列。
如果您使用的是 bash 或 zsh 等現代 shell,請使用
$
以便 shell 評估\t
並用實際選項卡替換它:nl -ba -s $'\t' full_media > full_media2
即便如此,如果您檢查輸出,看起來預設分隔符是一個製表符:
$ nl -ba -s $'\t' ~/at.sh | od -c 0000000 1 \t n o h u p s g $ nl -ba ~/at.sh | od -c 0000000 1 \t n o h u p s g
事實上,預設分隔符是製表符,由 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