简体   繁体   中英

How to replace '>> $log_file 2>&1' from all files

In my files commands are like:

File1.sh:

log_file='20210101'
echo -e "\n Output is \n" >> $log_file 2>&1

File2.sh

echo "Something"
log_file='20210102'
hive -e -f my_file_name.hql >> $log_file 2>&1

File3.sh

cat myfile
echo "something"
ehco "new line"
log_file='2021-01-01_23_59_59'
hive -e "Select * from tables' >> $log_file 2>&1

I am looking for a command to remove the line where defined variable 'log_file' from all the files AND remove only '>> $log_file 2>&1' part from all the files

Output in files:

File1.sh: echo -e "\n Output is \n"

File2.sh

echo "Something"
hive -e -f my_file_name.hql

File3.sh

cat myfile
echo "something"
ehco "new line"
hive -e "Select * from tables'

I tried multiple ways with sed but nothing worked, few of them are:

I tried: sed -e 's/*[>> $]log_file//g' test.sh sed -e 's/*[>> $]log_file[ 2>&1]//g' test.sh sed -e 's/\>\> \$log_file \2\>$//' test.sh sed -e 's/">> $log_file 2>&1"/""/g' test.sh

This sed command is a two-step process, and makes a backup of all files (just in case); on my machine (and with the 3 samples you posted) it does the right thing:

sed -i.bak -e '/^log_file=/d' -e 's/>> \$log_file 2>&1//g' File*

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM