
使ってみよう
nl -ba -s '\t' full_media > full_media2
ただし、タブ文字を追加するのではなく、実際に行番号の後に「\ t」テキストを追加します。私が編集しているファイルはCSVファイルで、ここでは最初にIDを持つ新しい列を追加したいと思います。
答え1
bashやzshなどの最新のシェルを使用している場合は、シェルを使用してそれを評価して$
実際\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