2011-04-21 106 views
1

我有一個文件,讀取shell腳本來更改索引值

96826999, words 
96826321, wotds 
96826567, dsdsa 
96826455,dssdsd 

我想改變在第一列的所有號碼是連續的起點在96826700 因此該文件最終看起來像

96826700, words 
96826701, wotds 
96826702, dsdsa 
96826703, dssdsd 

下面是我正在嘗試使用的shell腳本,但我錯過了一些可以幫助您的東西嗎?

INDEX=96826700 
for i in `cat file` 
do 
sed 's/^968267[0-9]/'${INDEX}'/g' 
INDEX=INDEX +1 
done 
+0

'INDEX = INDEX'?更好地仔細檢查一下...... :) – 2011-04-21 09:40:31

回答

5

可以使用bash外殼(或ksh)沒有外部命令

#!/bin/bash  
# tested on bash 4. 
IFS="," read a b < file 
while IFS="," read x b 
do 
    ((a++)) 
    echo "$a,$b" 
done < file 
+0

+1,謝謝你,但不是'IFS =「,」讀取b'而不是'IFS =「,」讀取xb「? – 2011-04-21 11:23:16

+1

@Alberto,不,'$ a'用於計數,它的值是從第一條語句中獲得的。 'x'只是一個假人。我們不想用文件第一列中的內容覆蓋'$ a'。我們只想得到'$ b'和遞增的'$ a'。 – 2011-04-21 11:28:28

+0

哦,好吧,現在我明白了,謝謝:) – 2011-04-21 11:32:47

0
awk -F"," 'NR==1{count=$1}{count++;print count"," $2}' temp 
+1

最好不要硬編碼計數。 'awk'BEGIN {OFS = FS =「,」} NR == 1 {count = $ 1} {print ++ count,$ 2}'temp' – 2011-04-21 11:03:56

+0

是的,你是對的,我想OP希望開始號碼是硬編碼的。 – Vijay 2011-04-21 11:11:54