Эхо меняет мои вкладки на пробелы - PullRequest
21 голосов
/ 26 февраля 2011

Я беру следующую структуру со всей сети в качестве основного примера того, как читать из файла в BASH:

cat inputfile.txt | while read line; do echo $line; done

Мой inputfile.txt, однако, разделен символами табуляции, истроки, которые выходят из вышеприведенной команды, разделены пробелом.

Это вызывает у меня проблемы с моим реальным приложением, которое, конечно, сложнее, чем выше: я хочу взять строку, сгенерировать что-то новоеоснованный на этом, и затем выведите оригинальную строку плюс новый материал как дополнительные поля.И конвейер будет достаточно сложным без набора cut -d ' ' и sed -e 's/ /\t/g' (что в любом случае небезопасно для данных, разделенных табуляцией, и пробелов).

Я смотрел на решения IFS, но они, кажется, не помогают в этом случае.То, что я хочу, это OFS ... кроме того, что я в эхо, а не в awk!Я думаю, что если бы я мог просто получить эхо, чтобы выплевывать то, что я дал, дословно, я был бы в хорошей форме.Какие-нибудь мысли?Спасибо!

1 Ответ

30 голосов
/ 26 февраля 2011

Попробуйте:

cat inputfile.txt | while read line; do echo "$line"; done

.

Другими словами, это не read замена вкладок, это echo.

См. Следующую расшифровку(используя <<tab>> там, где есть вкладки):

pax$ echo 'hello<<tab>>there' | while read line ; do echo $line ; done
hello there

pax$ echo 'hello<<tab>>there' | while read line ; do echo "$line" ; done
hello<<tab>>there
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...