Ввод <space>в сценарий оболочки в Ubuntu через echo - PullRequest
0 голосов
/ 22 ноября 2011

Я искал в Интернете это, но ничего не нашел, я нашел это вопросы и ответы через stackoverflow Символы табуляции эха в скрипте bash , но это не помогло мне.

iимеют индекс около 9000 строк, каждая строка имеет одну или две буквы на китайском языке.

любым способом, которым я бы хотел переписать каждую строку, чтобы она была одинаковой только с пробелом в конце.например:

в исходном индексе: AB

в новом индексе: AB

это сценарий, который я написал, но он не выполнил работу, которую он просто поставилпустая строка после каждого элемента в индексе, без пробела, что мне не хватает ???

это жесткий код:

 rm new_index.txt
 for line in $(cat index.txt)
   do
     echo "$line \t"  >> new_index.txt
   done

Ответы [ 3 ]

1 голос
/ 22 ноября 2011

Не баши, но для этого и нужен sed!

sed 's/$/ \t/' index.txt > new_index.txt

Что касается bash, у вас должен быть '-e' для эха, чтобы он понимал, что \ t - это символ табуляции вместо обратной косой черты и t.

rm new_index.txt
for line in $(cat index.txt)
  do
    echo -e "$line \t" >> new_index.txt
  done
1 голос
/ 22 ноября 2011

Попробуйте сделать это с помощью sed

sed -e 's/$/ /' index.txt > new_index.txt

Вы также можете сделать это на месте, т.е. обновить тот же файл

sed -e 's/$/ /' -i index.txt

С резервной копией

sed -e 's/$/ /' -i.bak index.txt
0 голосов
/ 22 ноября 2011

Попробуйте это

while IFS= read -r line ; do
    printf '%s \n' "$line"
done < index.txt > new_index.txt

Это сохранит каждую строку точно, но добавит пробел перед каждой новой строкой.

Примечание: printf не особенное, вы также можете сказать1007 *

echo "$line "

и получите тот же эффект.Важно то, как вы читаете файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...