Подтвердить что ты не робот

Echo меняет мои вкладки на пробелы

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

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

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

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

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

4b9b3361

Ответ 1

Try:

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