Как использовать awk для редактирования определенной строки, заданной переменной (awk NR, -i inplace и -v var)

Если файл:

this is line one
this is line two
this is line three

Я хочу сделать что-то вроде:

awk -i inplace -v line_number=$line_number 'NR == line_number {print $1}' file 

Допустим, line_number = 1 . Тогда желаемый результат:

this
this is line two
this is line three

Но вместо этого файл полностью заменяется отредактированной версией строки 1, в результате чего:

this

Каков правильный способ достичь желаемого результата?

0
задан 28 November 2020 в 02:19

1 ответ

Вам просто нужно применить правило по умолчанию {print} к другим записям, например.

awk -i inplace -v line_number=$line_number 'NR == line_number {print $1; next} {print}' file

или, возможно, более идиоматически

awk -i inplace -v line_number=$line_number 'NR == line_number {print $1; next} 1' file

В качестве альтернативы вы можете сделать что-то вроде

awk -i inplace -v line_number=$line_number 'NR == line_number {$0 = $1} 1' file
2
ответ дан 28 November 2020 в 00:15

Другие вопросы по тегам:

Похожие вопросы: