awk не может одновременно печатать массив и параметр позиции

awk не может одновременно печатать массив и параметр позиции

hehe.txt —> 23402269,55
haha.txt —> 23402269,108147883084318723015500000055,1,0

-

Не удается получить значение [$1]

awk -F"," '{if(NR==FNR){a[$1] = $2}else{if($1 in a){print a[$1]" | "$0}}}' hehe.txt haha.txt

или же

awk -F"," '{if(NR==FNR){a[$1] = $2}else{if($1 in a){printf("%s | %s\n",a[$1],$0)}}}' hehe.txt haha.txt

результат

| 23402269,108147883084318723015500000055,1,0

-

используя printf с%d, я могу получить правильный результат

awk -F"," '{if(NR==FNR){a[$1] = $2}else{if($1 in a){printf("%d | %s\n",a[$1],$0)}}}' hehe.txt haha.txt

результат

55 | 23402269,108147883084318723015500000055,1,0

-

Вопрос: интересно почему, спасибо.

1 ответ

Решение

Как уже упоминалось, проверьте, есть ли какие-либо контрольные символы M, если вам нужно удалить их, используйте следующую команду, а затем выполните команду.(Если у вас есть dos2unix утилита запускает его на свой файл Input_file и избавляется от управляющих символов M)

tr -d '\r' < Input_file > temp_file && mv temp_file Input_file
Другие вопросы по тегам