У меня есть файл, который мне нужно разборчиво, слово за словом и вносить изменения только в определенные слова. Мой скрипт bash работает во всем, кроме сохранения символов новой строки. Я построил минимальный пример следующим образом:Правильно интерпретировать символы новой строки
#!/bin/bash
# contents of myscript.sh
toks=($*)
for tok in ${toks[*]}; do
# make changes to $tok if need be
printf "$tok "
done
я надеюсь использовать его следующим образом:
cat filename.txt | xargs myscript.sh
где filename.txt может выглядеть
word1 word2
word3
Ожидаемый выходной будет таким же, как и вход, в этом случае, но я просто получаю
word1 word2 word3
Quote ваши переменные. Напишите их. Также не используйте '$ *', если вы хотите, чтобы позиционные аргументы безопасно использовали '' $ @ "'. –
, если вы четко выразили свою потребность, я принимаю решение о вашей реализации. Вам не нужно идти словом, да? Просто используйте расширенное регулярное выражение со словом. –
Я немного смущен о '' $ @ "' - я использую 'toks = (" $ @ ")' now и получаю тот же результат. Что касается словесного слова, мне, возможно, не нужно это делать, но так я начал его. Мое намерение состоит в том, чтобы написать команду, которая будет принимать любое количество аргументов и изменить * только * слова, соответствующие определенному шаблону, целым целям определенного характера. Я начал его, независимо глядя на каждое слово и меняя его, если нужно. – drjrm3