Если файл:
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
Каков правильный способ достичь желаемого результата?
Вам просто нужно применить правило по умолчанию {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