Echo меняет мои вкладки на пробелы
Я беру следующую структуру из сети в качестве базового примера того, как читать из файла в BASH:
cat inputfile.txt | while read line; do echo $line; done
Однако мой файл inputfile.txt разделен на табуляции, и строки, которые выходят из указанной выше команды, разделены пробелами.
Это вызывает у меня проблемы в моем реальном приложении, что, конечно, сложнее, чем выше: я хочу взять строку, создать на ней некоторые новые вещи, а затем вывести исходную строку плюс новый материал в качестве дополнительного поля. И конвейер будет достаточно сложным, без пучки cut -d ' '
и sed -e 's/ /\t/g'
(что в любом случае небезопасно для данных с разделителями табуляции, содержащих пробелы).
Я рассмотрел решения IFS, но они, похоже, не помогают в этом случае. То, что я хочу, это OFS... кроме того, что я в эхо, а не awk! Я думаю, что если бы я мог просто получить эхо, чтобы выплюнуть то, что я дал, дословно, я был бы в хорошей форме. Есть предположения? Спасибо!
Ответы
Ответ 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