Добавьте в конце строки с sed

учитывая документ простого текста с несколькими строками как:

c48 7.587 7.39
c49 7.508 7.345983
c50 5.8 7.543
c51 8.37454546 7.34

Я должен добавить некоторую информацию 2 пробелов после конца строки, таким образом, для каждой строки я добрался бы:

c48 7.587 7.39  def
c49 7.508 7.345983  def
c50 5.8 7.543  def
c51 8.37454546 7.34  def

Я должен сделать это для тысяч файлов. Я предполагаю, что это возможно сделать с sed, но не знает как к. Какая-либо подсказка? Вы могли также дать мне, некоторая ссылка с учебным руководством или таблицей для этого случается?

Спасибо

8
задан Open the way 25 March 2010 в 14:33
поделиться

2 ответа

если все ваши файлы находятся в одном каталоге

sed -i.bak 's/$/  def/' *.txt

сделать это рекурсивно (GNU find)

find /path -type f -iname '*.txt' -exec sed -i.bak 's/$/  def/' "{}" +;

вы можете посмотреть здесь введение в sed

Другие способы вы можете использовать,

awk

for file in *
do
  awk '{print $0" def"}' $file >temp
  mv temp "$file"
done 

Bash shell

for file in *
do
  while read -r line
  do
      echo "$line def"
  done < $file >temp
  mv temp $file
done
14
ответ дан 5 December 2019 в 10:02
поделиться
for file in ${thousands_of_files} ; do
    sed -i ".bak" -e "s/$/  def/" file
done

Ключевым здесь является команда search-and-replace s///. Здесь мы заменяем конец строки $ на 2 пробела и вашу строку.

Найти документацию по sed можно по адресу http://sed.sourceforge.net/#docs

3
ответ дан 5 December 2019 в 10:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: