几年前回答chinaunix上别人的一些问题时的帖子,这几年没再用shell都快忘光了,翻出来复习一下。
1,如何先读取一个文件(文件内容为数字序列)中的最后一个数字并把该数加一后又追加到原文件中?
cat file | xargs | awk ‘{print $0,$NF+1}’| xargs -n1 > newfile && mv -f newfile file
2,使文件中前2列和后3列完全一样的行只保留1行(任取一行保留)
文件a:
aa b test asfa??fff dd
test2
test3
aa b test4 hjks fff dd
aa b test5 hjks fff dd
变成
aa b test asfa??fff dd
test2
test3
cat file | sort | awk ‘!($1$2 in a){a[$1$2];print}’
3,shell求1到100和的问题
seq 1 100 | awk ‘{sum+=$0}END{print sum}’
4,awk匹配范围时可以条件选择
awk ‘/start1/||/start2/,/end/’ file
5,我想往每个文件夹里复制同一个文件有什么好方法吗?
find dir -type d -mindepth 1 | xargs -i echo “cp a” {} | sh
6,我如何在一个文件固定的行后,加入一个新行?
sed -i ‘50iThis is new hang!’ file? (sed版本: gnu sed 4.0.3)
7,
984.70
2994001
746.80
2384709
1013.30
3100664
…………….
上面是我的文件,我想把它分成两个文件,带小数点的数放到一个文件中,另它下面的数放到另一个文件中,生成的文件也是这样按列放置数据,并且不要有空行。
cat a | awk ‘NF>0{if($0~/\./) print $0 | “tee file1″;else print $0 | “tee file2″}’
|