sed 命令匹配行操作


#查看匹配到行的前面一行

cat  file.txt  |grep '5' -B1


#查看匹配到行的后面兩行

cat  file.txt  |grep '5' -A2


#查看匹配到行的前后各兩行

cat  file.txt  |grep '5' -C2



#查看兩個字符串之間的內容(在一行中才有效)

cat file.txt
<python>123456789</python>

cat file.txt | grep -E "<python>.*</python>" | awk '{t=$0;gsub(/.*<python>|<\/python>.*/,"",t);print t}' > new_file.txt

cat new_file.txt
123456789



#查看兩個字符串之間的內容(在多行中有效)

cat file.txt
begin ok start
1,2
4
67
stop end ok

#想要 begin ok 到 end ok 之間的內容
#!/bin/sh
begin_num=`cat -n  file.txt|grep -rin 'begin ok' file.txt|awk -F : '{print $1}'`
begin_string=`cat -n  file.txt|grep -rin 'begin ok' file.txt|awk -F : '{print $2}'`
begin_add1_num=$(($begin_num+1))
end_num=`cat -n  file.txt|grep -rin 'end ok' file.txt|awk -F : '{print $1}'`
end_string=`cat -n  file.txt|grep -rin 'end ok' file.txt|awk -F : '{print $2}'`
end_add1_num=$(($end_num-1))
#從左向右截取第一個 begin ok 后的字符串
echo ${begin_string#*begin ok}   
sed -n "${begin_add1_num},${end_add1_num}p" file.txt
#從右向左截取 第一個 / 后的字符串
echo ${end_string%end ok*}

結果:

start
1,2
4
67
stop

 

#刪除文件中的一段內容

#!/bin/sh
while read line
 do
  echo "${line}"
  #指定行號
  para_num=`grep -rin "${line}" file.txt|awk -F ":" '{print $1}'`
  echo "參數指定行:${para_num}"
  para_up_num=$((${para_num}-2))
  para_dow_num=$((${para_num}+2))
  echo ${para_up_num} ${para_dow_num}
  sed -i "${para_up_num},${para_dow_num}d" file.txt
 done  < config.conf
 
echo "所有表處理完成"
#說明:配置文件config.conf中盡量唯一,在文件中只能配置一行

#修改文件中的指定一行內容


#!/bin/sh
while read line
 do
  echo "${line}"
  para_old=`grep -ri "${line}" file.txt`
  #指定行號
  para_num=`grep -rin "${line}" file.txt|awk -F ":" '{print $1}'`
  echo "參數指定行:${para_num}"
  echo "替換之前的參數值:${para_old}"
  para_1="<para>"
  para_2="\$(bizDate) 1 \"SUBSTR(DEFAULT_DT,1,4)||SUBSTR(DEFAULT_DT,6,2)||SUBSTR(DEFAULT_DT,9,2)\" null \$(bizDate)</para>"
  para_new="${para_1}${line} ${para_2}"
  sed -i "${para_num}c ${para_new}" file.txt
  echo "替換之后的參數值:${para_new}"
 done  < config.conf
 
echo "所有表處理完成"

#說明:配置文件config.conf中盡量唯一,在文件中只能配置一行,其中para_1para_2 是這一行的內容

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM