[055]linux一些基本命令-sed,$()

背景

晚上帮一个朋友解决shell脚本的命令,好久没有用shell脚本有点生疏。
所以我也跟着回顾了一些shell知识。

sed

sed 是一个流编辑器而不是一个替换的工具(我们 用得最多的就是其替换功能)。他的原理是读取文件中的行存放到缓冲区,接着用sed处理缓冲区的内容,处理完成后把结果送到屏幕,所以文件内容并没有变。

sed 主要用来编辑多个文件简化文件的反复操作用来转换程序。

shawndeMacBook-Pro:~ shawn$ cat seddemo.txt 
I have a lot of books
shawndeMacBook-Pro:~ shawn$ sed 's/book/books/'  seddemo.txt
I have a lot of bookss
shawndeMacBook-Pro:~ shawn$ cat seddemo.txt  //原有的文件没有被替换
I have a lot of books
shawndeMacBook-Pro:~ shawn$ 

sed命令具体参考:http://man.linuxde.net/sed
sed主要用于对于缓冲中的数据进行,处理比如del、replace等等,还可以使用正则表达式。

awk

awk是一门编程语句,可以定义变量、数组、有运算符、有控制语句比如for循环等。

awk工作原理参考:
http://man.linuxde.net/awk#awk的工作原理,具体步骤是
1).定义头部BEGIN{}
2).pattern,读取文件每一行,进行转换输出。//注意在pattern中才开始遍历循环
3).end{}输出尾部。
由于头部,pattern,尾部经常用于输出类似表格的格式化数据。

cat    test.csv  | awk -F"," '{print $2,$3}'    ----------------我习惯与用管道如此写:
//$n 当前记录的第n个字段,比如n为1表示第一个字段,n为2表示第二个字段。 $0 //这个变量包含执行过程中当前行的文本内容。

定义变量

redo=1
data_root_dir="$HOME/data/VOCdevkit"
1.等号两遍不要有空格
2.引用一个变量需要带$符号,比如
一般情况下,$var 与 ${var} 并没有啥不一样。
但是用 ${ } 会比较精确的界定变量名称的范围,比方说:

$ A=B
$ echo $AB

原本是打算先将 $A 的结果替换出来,然后再补一个 B 字母于其后,
但在命令行上,真正的结果却是只会替换变量名称为 AB 的值出来…
若使用 ${ } 就没问题了:
3.定义数字不带“”,定义字符串要带“”号。

if语法

if [ $redo ]
then
  extra_cmd="$extra_cmd --redo"
fi

for 命令语法

for subset in test trainval
do
  ...
done

dirname

截图路径的目录部分

dirname
shawndeMacBook-Pro:~ shawn$ dirname /usr/bin/sort 
/usr/bin

变量替换

$( ) 与 (反引号) 都是用来做命令替换用(command substitution)的。
所谓的命令替换与我们第五章学过的变量替换差不多,都是用来重组命令行:

$ echo the last sunday is $(date -d "last sunday" +%Y-%m-%d)
-- 结果:
the last sunday is 2018-02-18

如此便可方便得到上一星期天的日期了… _
用 $( ) 的理由:
1, 很容易与 ' ' ( 单引号)搞混乱,尤其对初学者来说。
有时在一些奇怪的字形显示中,两种符号是一模一样的(直竖两点)。
2, 在多层次的复合替换中, 须要额外的跳脱( ` )处理,而 $( ) 则比较直观。例如:
这是错的:
[code]command1 command2command3[/code]
原本的意图是要在 command2 command3 先将 command3 提取出来给 command 2 处理。

pwd1=$(ls ./)
shawndeMacBook-Pro:~ shawn$ echo $(pwd1) //$()里必须是command
-bash: pwd1: command not found

shawndeMacBook-Pro:~ shawn$ echo ${pwd1}
Applications Applications (Parallels) ...... 我的坚果云

说在后面的话

由于代码运行结果依赖输入数据且人很容易陷入扣代码的细节,所以我建议是把代码日志输出出来。根据输入和输出你能够忽略细节最快的看代码。从这一点上我们看源代码不能只看不去运行,带着疑问要跑起查看运行日志这会让我们更加快速的开源软件架构和细节。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,128评论 2 34
  • 基础命令 主要的命令和快捷键 Linux系统命令由三部分组成:cmd + [options]+[operation...
    485b1aca799e阅读 1,085评论 0 0
  • sed与awk实例 文本间隔 在每一行后面增加一空行 将原来的所有空行删除并在每一行后面增加一空行。这样在输出的文...
    stuha阅读 1,881评论 0 21
  • 本文承接之前写的三十分钟学会AWK一文,在学习完AWK之后,趁热打铁又学习了一下SED,不得不说这两个工具真的堪称...
    mylxsw阅读 4,382评论 3 74
  • 知识点 sort uniq cut wc sed命令 awk命令 crontab定时器 sort sort 命令对...