linux上的一些工具 Java正则

 

#####awk
awk [options] 'script' var=value file(s)
awk [options] -f scriptfile var=value file(s)
cat build.xml|awk '/<jar/+/<install/' 显示含有<jar或者<install的行内容
awk '$1 == 5' file 
awk '$1 == "CT"' file 注意必须带双引号 
awk '$1 * $2 >100 ' file 
awk '$2 >5 && $2<=15' file 

awk -F "|" '{print $1}' file 按照新的分隔符“|”进行操作。 
awk 'BEGIN { FS="[: /t|]" } {print $1,$2,$3}' file 通过设置输入分隔符(FS="[: /t|]")修改输入分隔符。 
Sep="|" 
awk -F $Sep '{print $1}' file 按照环境变量Sep的值做为分隔符。 
awk -F '[ :/t|]' '{print $1}' file 按照正则表达式的值做为分隔符,这里代表空格、:、TAB、|同时做为分隔符。 
awk -F '[][]' '{print $1}' file 按照正则表达式的值做为分隔符,这里代表[、] 

cat build.properties.default |awk '/#/{print "注释"}' --遇到行首是#开头的注释 
awk '$1 ~ /101/ {print $1}' file 显示文件中第一个域匹配101的行(记录)。 
awk 'BEGIN { OFS="%"} {print $1,$2}' file 通过设置输出分隔符(OFS="%")修改输出格式。输出值域1,2并以%分割
awk '{$1 == 'Chi' {$3 = 'China'; print}' file 找到匹配行后先将第3个域替换后再显示该行(记录)。
http://blog.csdn.net/tianlesoftware/article/details/6278273

######sed 只是输出不显示 作用于行数据
sed [-nefri] ‘command’ 输入文本 
-n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e∶直接在指令列模式上进行 sed 的动作编辑;
-f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;
-r∶sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)
-i∶直接修改读取的档案内容,而不是由萤幕输出。       
a   ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c   ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d   ∶删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i   ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p  ∶列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~
s  ∶取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
>删除某行
sed '1d' ab              #删除第一行 
sed '$d' ab              #删除最后一行
sed '1,2d' ab           #删除第一行到第二行
sed '2,$d' ab           #删除第二行到最后一行
>显示某行
sed -n '1p' ab           #显示第一行 
sed -n '$p' ab           #显示最后一行
sed -n '1,2p' ab        #显示第一行到第二行
sed -n '2,$p' ab        #显示第二行到最后一行
>使用模式进行查询
sed -n '/ruby/p' ab    #查询包括关键字ruby所在所有行
sed -n '/\$/p' ab        #查询包括关键字$所在所有行,使用反斜线\屏蔽特殊含义
>增加一行或多行字符串
sed '1a drink tea' ab  #第一行后增加字符串"drink tea"
sed '1,3a drink tea' ab #第一行到第三行后增加字符串"drink tea"
sed '1a drink tea\nor coffee' ab   #第一行后增加多行,使用换行符\n
>代替一行或多行
sed '1c Hi' ab                #第一行代替为Hi
sed '1,2c Hi' ab             #第一行到第二行代替为Hi
>替换一行中的某部分
sed 's/要替换的字符串/新的字符串/g'   (要替换的字符串可以用正则表达式)
sed -n '/ruby/p' ab | sed 's/ruby/bird/g'    #替换ruby为bird
ed -n '/ruby/p' ab | sed 's/ruby//g'        #删除ruby
>插入
sed -i '$a bye' ab         #在文件ab中最后一行直接输入"bye"
######sort
u去重 r降序 k 第几列 t分割符 n 排序按数字
-f会将小写字母都转换为大写字母来进行比较,亦即忽略大小写
-c会检查文件是否已排好序,如果乱序,则输出第一个乱序的行的相关信息,最后返回1
-C会检查文件是否已排好序,如果乱序,不输出内容,仅返回1
-M会以月份来排序,比如JAN小于FEB等等
-b会忽略每一行前面的所有空白部分,从第一个可见字符开始比较。
######uniq
– c 显示输出中,在每行行首加上本行在文件中出现的次数。它可取代- u和- d选项。
– d 只显示重复行。
– u 只显示文件中不重复的各行。
– n 前n个字段与每个字段前的空白一起被忽略。一个字段是一个非空格、非制表符的字符串,彼此由制表符和空格隔开(字段从0开始编号)。
+n 前n个字符被忽略,之前的字符被跳过(字符从0开始编号)。
– f n 与- n相同,这里n是字段数。
– s n 与+n相同,这里n是字符数。
######grep
[options]主要参数:
-c:只输出匹配行的计数。
-I:不区分大 小写(只适用于单字符)。
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及 行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。
pattern正则表达式主要参数:
\: 忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的开始行。
$: 匹配正则表达式的结束行。
\<:从匹配正则表达 式的行开始。
\>:到匹配正则表达式的行结束。
[ ]:单个字符,如[A]即A符合要求 。
[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
。:所有的单个字符。
* :有字符,长度可以为0。
#!/bin/bash
function usage()
{
    echo "请进入要搜索的目录再使用."
    echo "usage:$0 'keyword'"
}
if [ $# -ne 1 ];then
    usage
    exit
fi
grep -nre "$1" * --exclude=*ttf --exclude=*gif --exclude=*jpg --exclude=*gdf --color=ALWAYS|grep -v \.svn|grep -v custom\.js| grep -v lib\.js | grep -v custom\.css


######find
find /tmp/ -name "eclipse*"|xargs rm -rf


######wc
- c 统计字节数。  
- l 统计行数。  
- w 统计字数。

#!/bin/bash
hostfile='/tmp/hosts'
if test -s $hostfile;then
    rm -rf $hostfile;
fi
wget -t 0 -w 31 -c https://smarthosts.googlecode.com/svn/trunk/hosts -O $hostfile
if test -s $hostfile;then
    echo '下载成功';
    mv $hostfile /etc/hosts;
    [ $? -eq 0 ] && echo "/etc/hosts update success";
else
    echo '下载失败';
fi
exit 0;
#rhythmbox播放器乱码转换脚本mp3.sh,保存后执行mp3.sh|sh
ls|grep -v 'mp3.sh'|while read line
do
	line=$(echo $line|sed 's/[ ()&]/\\&/g')
	echo mid3iconv -e gbk $line
done

 


import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class base {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		find();
		fetch();
		opera();
	}

	public static void find() {
		//是否包含@qq.com
		String source = "[email protected]";
		String regEx = "[@qq.com]";
		Pattern pattern = Pattern.compile(regEx);
		Matcher matcher = pattern.matcher(source);
		boolean isFind = matcher.find();
		if (isFind) {
			System.out.println(true);
		}

		//找到@替换成<at>
		pattern = Pattern.compile("[@]"); // 正则表达式
		matcher = pattern.matcher(source); // 操作的字符串
		StringBuffer sb = new StringBuffer();
		int count = 0;
		while (matcher.find()) {
			matcher.appendReplacement(sb, "<at>");
			count++; // 字符串出现次数
		}
		matcher.appendTail(sb);// 从截取点将后面的字符串接上
		System.out.println(sb.toString());
	}

	public static void fetch() {
		// xiaofancn
		// qq.com234
		String source = "[email protected]";
		Pattern pattern = Pattern.compile("@"); // 正则表达式
		String[] strs = pattern.split(source); // 操作字符串 得到返回的字符串数组
		for (String string : strs) {
			System.out.println(string);
		}

		// 234
		pattern = Pattern.compile("[0-9]"); // 正则表达式
		Matcher matcher = pattern.matcher(source); // 操作的字符串
		String number = "";
		while (matcher.find()) {
			// m.start() 返回匹配到的子字符串在字符串中的索引位置.
			// m.end()返回匹配到的子字符串的最后一个字符在字符串中的索引位置.
			// m.group()返回匹配到的子字符串
			number += matcher.group();
		}
		System.out.println(number);
	}

	public static void opera() {
		// xiaofancn<at>qq.com234
		String source = "[email protected]";
		Pattern pattern = Pattern.compile("[@]"); // 正则表达式
		Matcher matcher = pattern.matcher(source); // 操作的字符串
		String result = matcher.replaceAll("<at>"); // 替换后的字符串
		System.out.println(result);
	}

}
 

 

http://edu.yesky.com/edupxpt/18/2143018.shtml

 

 

 

你可能感兴趣的:(linux)