2016-08-17 3 views
0

У меня есть текстовый файл, как показано нижеИзменения определенной строки и строки в текстовом файле в Баше

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 

Мой текстовый файл имеет пять строк и пять столбцов, которые разделены пробелом. Теперь я решил изменить значение в строке # 3 и # 4 колонки (я имею в виду 24) с 99

Это означает, что мой выход будет:

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 

скрипта будет печатать каждую строку, но если он находит строки номера три, он будет первым изменить четвертое значение 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 
Смежные вопросы