Рассмотрим следующую команду:Есть ли способ полностью удалить поля в awk, чтобы лишние разделители не печатали?
gawk -F"\t" "BEGIN{OFS=\"\t\"}{$2=$3=\"\"; print $0}" Input.tsv
Когда я поставил $ 2 = $ 3 = "", предполагаемый эффект, чтобы получить тот же эффект, что и письма:
print $1,$4,$5...$NF
Однако, что на самом деле происходит то, что я получите два пустых поля, а дополнительные разделители полей все еще печатаются.
Можно ли фактически удалить $ 2 и $ 3?
Примечание: Если это было на Linux в bash
, то правильное утверждение было бы следующим, но Windows не обрабатывает одинарные кавычки в cmd.exe
.
gawk -F'\t' 'BEGIN{OFS="\t"}{$2=$3=""; print $0}' Input.tsv
Вы должны использовать одиночные кавычки для внешнего набора, то вам не придется бежать двойные кавычки внутри сценария. Если вы используете двойные кавычки для внешнего набора, чтобы вы могли вставлять переменные оболочки, вместо этого используйте '-v', чтобы вместо этого выполнить переменную. –
Я использую awk в Windows. По какой-то причине Cmd.exe плохо работает с одинарными кавычками. – merlin2011
Я сделал это еще 10 лет назад (думаю). попробуйте сделать $ 2 = $ 3 = ""; $ 0 = $ 0'. Удачи. – shellter