2016-08-17 19 views
0

排在文本文件中我有一個像下面更改特定的線和在bash

01 02 03 04 05 
11 22 33 44 55 
21 22 23 24 25 
31 32 33 34 35 
41 42 43 44 45 

我的文本文件有五個行和相隔空間5列的文本文件。現在我決定用99

更改列#3和列#4(我的意思是24)的值,這意味着我的輸出將是:

01 02 03 04 05 
11 22 33 44 55 
21 22 23 99 25 
31 32 33 34 35 
41 42 43 44 45 

我很欣賞,如果你親切地指導我

真誠

+0

歡迎來到SO,請展示您的編碼工作。 – Cyrus

+0

請看看:[我應該怎麼做當有人回答我的問題?](http://stackoverflow.com/help/someone-answers) – Cyrus

回答

0

使用awk

$ awk 'NR == 3 { $4 = 99 } { print }' data.in >data.out 

awk腳本將打印每一行,但如果它找到第三行,它將首先將第四個值更改爲99.

注意:NR表示「當前記錄的序號」,而不是「行號」,但因爲默認情況下記錄是一行,在這種情況下它是一樣的。

+0

或與變量:'awk -v row = 3 -v col = 4'NR == row {$ col =「99」} {print}'data.in> data.out' – Cyrus

0

如果你不想保留兩行之間的空白行,那麼下面應該工作。

awk 'NR==3 {$4=99}1' file 

如果你想保留兩行之間的空白行,那麼下面應該工作。

grep . file | awk 'BEGIN{ORS="\n\n"}NR==3{$4="99"}1' 
01 02 03 04 05 

11 22 33 44 55 

21 22 23 99 25 

31 32 33 34 35 

41 42 43 44 45