2008-12-06 3 views
1

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

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

Например, этот текстовый файл:

кот/и т.д./пароль | голова -101 | tail -3 nl/etc/passwd | голова -15 | cut -d ':' -f1 cat/etc/passwd | cut -d ':' -f1,5 | tee users.txt nl/etc/passwd | хвост -1 | cut -f1 ls ~/главная | nl | хвост -1 | cut -f1 ls -lR/2>/dev/null | sort -n -r +4 | голова -1

должен выглядеть следующим образом, когда я удвоит место:

кошки/и т.д./пароль | голова -101 | хвост -3
nl/etc/passwd | голова -15 | cut -d ':' -f1
cat/etc/passwd | cut -d ':' -f1,5 | tee users.txt
nl/etc/passwd | хвост -1 | cut -f1
ls ~/home | nl | хвост -1 | cut -f1 ls -lR/2>/dev/null | sort -n -r +4 | head -1

И тогда я бы использовал цикл для выполнения каждой строки.

вот мой сценарий:

FILE="$1" 

echo "You Entered $FILE" 

if [ -f $FILE ]; then 

tmp=$(cat $FILE | sed '/./!d' | sed -n '/regex/,/regex/{/regex/d;p}'| sed -n '/---/,+2!p' | sed -n '/#/!p' | sed 's/^[ ]*//' | sed -e\ 
s/[^:]*:// | sed -n '/==> /!p' | sed -n '/--> /!p' | sed -n '/"lab3.cmd"/,+1!p'\ 
| sed -n '/======/!p' | sed -n '/regex/!p' | sed -n '/commands are fun/\ 
!p' | sed -n '/regex/!p') 

fi 

MyVar=$(echo $tmp > hi.txt) 
echo "$MyVar"

Является ли это правильный путь идти об этом?

ответ

2

Почему бы просто не разделить разделители строк на команды? Вам не нужна пустая строка, чтобы разграничить их, если ваша команда не должна содержать разделители строк, а затем, если она должна содержать 2 строки?

0

Боюсь, я не понимаю проблему, которую вы пытаетесь решить. Если вы пишете команды в файл с именем commands.txt, вы можете выполнить их просто

sh commands.txt 

, который выполняет каждую строку файла. Если вы хотите сделать это в цикле я полагаю, вы могли бы попробовать что-то вроде

for i in *; do FILE="$i" sh commands.txt; done 

Может быть, вы можете изменить свой вопрос, чтобы сделать его немного более конкретно?

Смежные вопросы