chaoshu的个人博客分享 http://blog.sciencenet.cn/u/chaoshu

博文

实用方法

已有 2908 次阅读 2015-10-21 17:20 |个人分类:Ubuntu|系统分类:科研笔记

如何寻找五六十年代总参测绘局在全国布设的控制点呢,当然是利用坐标(E1,N1,U1),卫星导航定位啦!

光靠这个是很难挖到点的,需要在实地做一个临时点,观测这个临时点的坐标(E2,N2,U2),然后和要找的点交汇。其实就是放样:(假如经纬度坐标均以度为单位)

东西向距离:Se=(E2-E1)*3600*30*cos(N1)

南北向距离:Sn=(N2-N1)*3600*30

30:大圆弧上一秒对应地面的实际距离

赤道长度C=2πR;所对应的角度为360°;

所以一秒对应地面的实际距离s=2πR/(360*3600)≈30.88m


MATLAB如何获得高清矢量图

uimenufcn(gcf,'EditCopyFigure')

删除文件中含有特定字符的行

sed -i -e '/string/d' file


1、find+cp实现批量复制文件

find . -name *.pdf | xargs -i cp {} ../docbook_pdf/

2、find+rm实现批量删除特定文件

find . -name  *.txt  | xargs rm

注意:查看某种文件的个数

find ./rinex -name "*.15o" | wc -l

ls ./rinex/*.15o | wc -l

查看文件有多少行

wc -l filename

3、批量修改文件名

rename 's/原来的字符串/新字符串/ ' *

exp: rename 's/aA.T02/0.T02/' ./tulo/*

批量添加文件扩展名

rename 's/$/\.txt/' *

rename 's/(\d)/第$1 章/' *

4、自动下载ftp的文件

wget -r -nd -P /opt/gamit/tables  ftp://garner.ucsd.edu/archive/garner/gamit/tables

注:参数P后面的下载存放文件夹可以自动生成

5、统计文件个数

ls ./myfolder | wc -l

注意:統計一個文件中有多少行,wc -l  yourfile

6、linux下正确的只列出当前目录下文件名的方法如下:

ls -1 -F | grep -v [/$]

7、linux下正确的只列出当前目录下目录名的方法如下:

a)一般情况下可使用 ls -l | grep^d ,若只列出目录名: ls -l | grep ^d | awk '{print$8}'

b)若目录名中有空格,可使用ls -F | grep[/$],不能写成 ls -F | grep[*/$], [*/$]表示以*或者/结尾都可以

8、获取文本最后一行

tail -1 rawofile


bash的最佳计算表示方法:

c=$(awk 'BEGIN{print 7.01*5-4.01 }')

9、bash浮点数计算

# basic usage of 'bc' tool in Bash.
a=3.33
b=3.3
c=$(echo "$a + $b" | bc)
d=$(echo "$a * $b" | bc)
e=$(echo "scale=5; $a / $b" | bc)
echo "c=a+b=$a+$b=$c"
echo "d=a*b=$a*$b=$d"
echo "e=a/b=$a/$b=$e"

注意:整数计算使用expr :

a=2

b=3

aa=`expr $a + $b + 1 `

10、简单的运算方法

doy=211

ndays=3

allday=$((doy+ndays-1))

11、判斷文件中是否存在某一字符

if [ -z "`grep "Error" file.txt`" ]
then
   echo "NULL"
else
   echo "NOT NULL"
fi

12、大小寫轉換


13、awk功能函數

一、split 初始化和类型强制
      awk的内建函数split允许你把一个字符串分隔为单词并存储在数组中。你可以自己定义域分隔符或者使用现在FS(域分隔符)的值。
格式:

  split (string, array, field separator)
  split (string, array) -->如果第三个参数没有提供,awk就默认使用当前FS值。

例子:
例1:替换分隔符




二、substr 截取字符串        返回从起始位置起,指定长度之子字符串;若未指定长度,则返回从起始位置到字符串末尾的子字符串。
格式:
 substr(s,p) 返回字符串s中从p开始的后缀部分
 substr(s,p,n) 返回字符串s中从p开始长度为n的后缀部分
例子:



[root@test~]# echo "123" | awk '{print substr($0,1,1)}'

解释:

awk -F ',' '{print substr($3,6)}'   --->  表示是从第3个字段里的第6个字符开始,一直到设定的分隔符","结束.
substr($3,10,8) --->  表示是从第3个字段里的第10个字符开始,截取8个字符结束.
substr($3,6)     --->  表示是从第3个字段里的第6个字符开始,一直到结尾

三、length 字符串长度
  length函数返回没有参数的字符串的长度。length函数返回整个记录中的字符数。

1
2
[root@test~]# echo "123" | awk '{print length}'
3

14、查找兩個文件中不想同的行

grep -vwf file1 file2

查看文件1中沒有而文件2中有的行


15、vim 中如何在每行行首或行尾插入指定字符串

行首:%s/^/your_word/

行尾:%s/$/your_word/

删除空格

行首 :%s/^ *//

行尾 :%s/\s\+$//


16、vim大小写转换

vim中大小写转化的命令是
gu或者gU
形象一点的解释就是小u意味着转为小写;大U意味着转为大写.

剩下的就是对这两个命令的限定(限定操作的行,字母,单词)等等

a、整篇文章大写转化为小写
 打开文件后,无须进入命令行模式。键入:ggguG

   解释一下:ggguG分作三段gg gu G
   gg=光标到文件第一个字符
   gu=把选定范围全部小写
   G=到文件结束

b、整篇文章小写转化为大写
 打开文件后,无须进入命令行模式。键入:gggUG

   解释一下:gggUG分作三段gg gU G
   gg=光标到文件第一个字符
   gU=把选定范围全部大写
   G=到文件结束

c、只转化某个单词

   guw 、gue
   gUw、gUe
   这样,光标后面的单词便会进行大小写转换
   想转换5个单词的命令如下:
   gu5w、gu5e
   gU5w、gU5e

d、转换几行的大小写
将光标定位到想转换的行上,键入:1gU 从光标所在行 往下一行都进行小写到大写的转换
10gU,则进行11行小写到大写的转换
以此类推,就出现其他的大小写转换命令
gU0        :从光标所在位置到行首,都变为大写
gU$        :从光标所在位置到行尾,都变为大写
gUG        :从光标所在位置到文章最后一个字符,都变为大写
gU1G      :从光标所在位置到文章第一个字符,都变为大写


17、获取行号

grep -n '*----+' 93001.pos | cut -d ":" -f1


18、修改文件内容

sed  -i 's/properties/property/g'  build.xml



https://blog.sciencenet.cn/blog-858128-929857.html

上一篇:[转载]unbuntu上安装Bernese
下一篇:shell script
收藏 IP: 27.19.156.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-7-16 23:57

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部