Сценарий Sed Bash запускает только первую строку sed

Попробуйте с помощью этих команд, Если вы не root, попробуйте с помощью команды sudo,

pkill apt && apt update

Я не уверен в этой команде. Это убьет подходящие процессы, работающие в системе.

0
13.04.2021, 21:55
1 ответ

Как уже прокомментировали @roaima и @kusalananda , ваш sedhw.bashявляется sedfile.

sed -f sedhw.bash thesbians.txtзапустит все команды sed -в sedhw.bash для файла thesbians.txt

Что вы хотите сделать вместо этого — это перебрать строки в sedhw.bash и выполнить каждую строку для создания нового выходного -файла:

#!/bin/bash
while read num line; do 
     sed "$line" thesbians.txt > output.${num}.txt
done < <(nl sedhw.bash)

Объяснить :nl sedhw.bashпронумерует ваши команды, а "вкладка -разделит" номер строки и команду:

     1  s/[0-9]*//g
     2  s/1908/---/g; s/1895/---/g; s/1903/---/g
     3  s/,.*//g
     4  s/^[^"]*"/"/
     5  s/,[^",]*"/,/;s/"//g

<(...)представит вывод команд в виде файла цикла while -.

Цикл будет передавать этот «файл» построчно с помощью <и считывать поля, разделенные вкладкой -, в переменные «num» и «line».

sedвыполняет команду «$line» и записывает ее в файл с номером соответствующей строки в sedhw.bash.

Результат

$ for item in output*; do echo; echo "=== $item ==="; cat $item ; done 

=== output.1.txt ===
Chase,Cornelius "Chevy"
Davis,Ruth      "Bette"
Keaton,Joseph   "Buster"
Stone,Emily     "Emma"
Lee,Shelton     "Spike"
Reynolds,Mary   "Debbie"
Crosby,Harry    "Bing"
Fey,Stamatina   "Tina"

=== output.2.txt ===
Chase,Cornelius 1943 "Chevy"
Davis,Ruth      ---  "Bette"
Keaton,Joseph   ---  "Buster"
Stone,Emily     1988 "Emma"
Lee,Shelton     1957 "Spike"
Reynolds,Mary   1932 "Debbie"
Crosby,Harry    ---  "Bing"
Fey,Stamatina   1970 "Tina"

=== output.3.txt ===
Chase
Davis
Keaton
Stone
Lee
Reynolds
Crosby
Fey

=== output.4.txt ===
"Chevy"
"Bette"
"Buster"
"Emma"
"Spike"
"Debbie"
"Bing"
"Tina"

=== output.5.txt ===
Chase,Chevy
Davis,Bette
Keaton,Buster
Stone,Emma
Lee,Spike
Reynolds,Debbie
Crosby,Bing
Fey,Tina
1
28.04.2021, 22:52

Теги

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