Rozważmy następującą komendę:Czy istnieje sposób całkowitego usunięcia pól w awk, aby dodatkowe ograniczniki nie były drukowane?
gawk -F"\t" "BEGIN{OFS=\"\t\"}{$2=$3=\"\"; print $0}" Input.tsv
Kiedy ustawić $ 2 = $ 3 = "", efekt zamierzony, aby uzyskać taki sam efekt, jak pisanie:
print $1,$4,$5...$NF
Jednak to, co naprawdę się dzieje, że ja uzyskać dwa puste pola, a dodatkowe ograniczniki pól nadal drukują.
Czy można rzeczywiście usunąć 2 USD i 3 USD?
Uwaga: Jeśli był on pod Linuksem w bash
, poprawne powyższe zdanie byłoby następujące, ale system Windows nie obsługuje pojedynczych cudzysłowów dobrze w cmd.exe
.
gawk -F'\t' 'BEGIN{OFS="\t"}{$2=$3=""; print $0}' Input.tsv
należy używać apostrofów dla zewnętrznego zestawu, wtedy nie trzeba uciekać się cudzysłów wewnątrz skryptu. Jeśli używasz podwójnych cudzysłowów dla zewnętrznego zestawu, aby można było osadzić zmienne powłoki, użyj '-v', aby zamiast tego przekazywać zmienną. –
Używam awk w systemie Windows. Program Cmd.exe nie jest z jakiegoś powodu dobrze odtwarzany z pojedynczymi cudzysłowami. – merlin2011
Zrobiłem to 10 lat temu (myślę). spróbuj wykonać "$ 2 = 3 $ =" "; 0 $ = 0 $". Powodzenia. – shellter