Как добавить слово в конце строки с ^ без перевода строки? - PullRequest
1 голос
/ 10 октября 2019

Я хотел бы добавить строку (пример: «1565555555») в конце определенной строки в моем файле.

Мой файл .txt перед:

mystrinsdsfssffdfdg
mystrdsfdsfdfffding
mystrsfdsdfsffdfing
mystrdsfdfsdfsffing

Здесьмой сценарий:

for file in mydirectory/*txt; do
  filename=`basename "$file"`
  # read each line
  while IFS= read -r line
  do
     old="$IFS"
     IFS="^"
     set $line

     IFS="$old"
     count=1
     id="2656556655"

     sed "s/$line/&^$id/" -i $file #my problem
  ((count++))
  done < "$file"
done

Сегодня мой результат:

mystrinsdsfssffdfdg
^2656556655
mystrdsfdsfdfffding
^2656556655
mystrsfdsdfsffdfing
^2656556655
mystrdsfdfsdfsffing
^2656556655

Ожидаемый результат:

mystrinsdsfssffdfdg^2656556655
mystrdsfdsfdfffding^2656556655
mystrsfdsdfsffdfing^2656556655
mystrdsfdfsdfsffing^2656556655

1 Ответ

1 голос
/ 10 октября 2019

Предполагается, что целью является добавление строки (^ 2656556655) в конец каждой строки в данном файле ...

Один пример файла:

$ cat mystring.txt
mystrinsdsfssffdfdg
mystrdsfdsfdfffding
mystrsfdsdfsffdfing
mystrdsfdfsdfsffing

Один sed решение, которое добавляется в конец каждой строки в файле:

$ sed 's/$/^2656556655/g' mystring.txt
mystrinsdsfssffdfdg^2656556655
mystrdsfdsfdfffding^2656556655
mystrsfdsdfsffdfing^2656556655
mystrdsfdfsdfsffing^2656556655

Одним из преимуществ этого метода является то, что вы заменяете a) конструкцию внутреннего цикла и повторяющиеся вызовы sed для каждой строки вфайл с б) один sed вызов и один проход через входной файл. Чистый результат заключается в том, что вы должны заметить заметное ускорение во время обработки данного файла.

...