По сути, мне предоставлен текстовый файл, и я должен использовать его с помощью команд sed. У меня есть около 7 команд sed total и нужно поместить их в один сценарий оболочки, чтобы вывести ONE-выход, когда этот скрипт запущен.
Текстовый файл, который нужно завинтить с помощью: students.txt
[d2 ] Students.txt:DogG DOGGGGGGGG
dog dog dog Jamesb
JamesBrady
derghnregnrig
JamesBeody
Итак, первое седло избавляется от первой и последней строки. второй sed заменяет собаку с помощью 3D-поиска DOGGGG и печатает все строки с четвертым седлом JamesBrady и печатает все строки с помощью команд derghnregnrig
Sed (примеры BS):
sed -e '1d' -e '$d' -e '/^$/d' students.txt
sed -n s/dog/DOGGGG/g students.txt
sed -n /JamesBrady/p students.txt
sed -n /derghnregnrig/p students.txt
над командами sed все должны входить в один файл сценария оболочки, и когда запуск должен выводить его (кумулятивные?) эффекты на один текстовый файл (students.txt)
До сих пор я пытался посмотрите правильную процедуру для этого и не встретите ничего, кроме путаницы. Может ли кто-нибудь объяснить в ясности и с терпением новичка, как несколько команд sed и любые команды (awk, grep и т. Д.), Если на то пошло, должны вписываться в один файл сценария оболочки?
Использование Ubuntu 16.04, Vim. Bash shell
Прежде всего, проверьте эти команды sed, они могут не делать то, что вы хотите. Например, второй, а не
sed -n s/dog/DOGGGG/g students.txt
Я думаю, что это должно быть
sed -i 's/dog/DOGGGG/g' students.txt
Прочитайте man sed и убедитесь, что они индивидуально работают, прежде чем создавать свой скрипт .
Создайте новый файл (т.е. nano yourscript.sh) и напишите #!/bin/bash, а затем ваши команды sed, заменив students.txt на $1. Этот $1 представляет первый аргумент при вызове скрипта:
#!/bin/bash
sed -e '1d' -e '$d' -e '/^$/d' $1
sed -n s/dog/DOGGGG/g $1
sed -n /JamesBrady/p $1
sed -n /derghnregnrig/p $1
С правильными командами sed. Теперь дайте разрешения на выполнение сценария:
sudo chmod 755 yourscript.sh
И запустите его, с именем файла в качестве первого аргумента:
sudo ./yourscript.sh students.txt
Вам нужна только sudo в этой последней команде, если ваш у пользователя нет разрешения на изменение student.txt.
Вариант 1: поместите каждую команду sed в ваш сценарий оболочки на отдельной строке и попросите их работать на месте с помощью ключа -i.
Вариант 2: используйте одну командную строку sed в вашем сценарии оболочки, но передайте каждое выражение, используя отдельный переключатель -i .
Вариант 2 предпочтителен, если ваши выражения ортогональны (то есть они не работают с одинаковыми совпадениями ).