L oop над строкой имени в файле bash - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть имя файла «list.txt» с именами сотрудников - большинство из них «Raj»,
Я хочу создать скрипт в bash с именем «findRaj. sh» - скрипт должен перехватить все строки "Raj" в файле "list.txt" и сохранить его в новом файле с именем "newlist.txt",

Я создал скрипт с "nao findRaj. sh" следующим образом:

#!/bin/bash
> newlist.txt
# i save the file name in variable call files
files=`grep ' jane ' ../data/list.txt`
#
if test -e ~/data/list.txt; then echo "File exists"; else echo "File doesn't exist"; fi

но я не знаю, как сделать этот раздел

Поскольку ни один из файлов, присутствующих в файле list.txt, не доступен в файловой системе, проверьте, присутствуют ли имена файлов в файлах. переменные фактически присутствуют в файловой системе. Для этого воспользуйтесь тестом Now, переберите переменную files и добавьте тестовое выражение в l oop. Если элемент в переменной files проходит тест, добавьте / добавьте его в файл newlist.txt

У кого-нибудь есть идея?

Ответы [ 2 ]

0 голосов
/ 21 февраля 2020

Спасибо за вашу помощь, но я немного изменил ваш код, и это решило мою проблему. После того, как вы попробовали ваш код, он напечатал файл пустым - я изменяю его, как показано ниже

for file in $files 
do 
   if test -e ~/data/list.txt;
   then 
       echo "$file" >> newlist.txt
   fi
done
0 голосов
/ 21 февраля 2020

если ваша переменная $files содержит имена файлов, вы можете просто сделать следующее l oop. Если файл существует, он добавит свое имя в файл newlist.txt

for file in $files 
do 
   if [ -f "$file" ]
   then 
       echo "$file" >> newlist.txt
   fi
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...