Попробуйте с помощью этих команд, Если вы не root, попробуйте с помощью команды sudo
,
pkill apt && apt update
Я не уверен в этой команде. Это убьет подходящие процессы, работающие в системе.
Как уже прокомментировали @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