保留两个关键词之间的内容–单行或者多行

danny posted @ 2011年11月19日 13:42 in shell with tags grep sed , 2330 阅读

這是舊文了,無奈訪問原地址代價高,轉到這裏.

 

#!/bin/bash
# 能不能先并行(使用一个没有出现过特殊字符串作为结束标记),再分行?
# file1.txt
#"abcxdefgaxcdyeafgxyxabefght..."
#"fewewretgjkjk543yeafgxy4534ght..."
# 处理 删除第一个x前的内容和最后一个y后面的内容
# 预期结果
#defgaxcdyeafgxyxabefght..."
#"fewewretgjkjk543yeafgx
# 合并行
# "公平"就是传说中的标记
sed 's/$/公平/g' tex1.txt | tr -d '\n' | sed 's/公平$//'>file1.txt
i=`sed 's/x.*$/x/' file1.txt`
j=`sed 's/^.*y/y/' file1.txt`
echo $i $j | sed -e "s/$i//" -e "s/$j$//" file1.txt

几经修改,最后得到是代码是下面几行。算法不变:先并行,再行分,使用贪婪匹配 x.*y 其實,它本貪婪

 

#!/bin/bash
for i in text*.txt
do
cat $i | tr '\n' '\034' | grep -oP 'x.*y' | sed -e 's/^x//;s/y$//' | tr '\034' '\n' | tee out-$i
done
exit 0

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter