编程必知的10个Unix命令技巧



编程必知的10个Unix命令技巧

行业资讯 | 作者:走猫步的鱼 | 2015-01-07 09:52:45| 阅读 2有用 (0) 评论 (0) 收藏


标签: Unix/Linux
概述:10个Unix命令技巧帮助你化繁为简,轻松玩转Unix命令。

Unix命令为我们的工作提供了极大的便利。这里分享10个Unix命令小窍门,让我们一起将大工作量变得更快速。

文件每一行显示最后一个字

如果你知道$NF,这个技巧就相对简单。

?
1
2
awk '{print $NF}
awk -F: ' {print $NF}'

NF编程代表字段数(e.g., 5),因此,$NF 代表字段值 (e.g., $5)。

?
1
2
3
4
5
6
$ cat numbers
1 2 3 4 5
one two three four five
$ awk '{print $NF}' numbers
5
five

这个技巧,在打印文件最右边的字时很有帮助,即使是每行包含不同字数的词,也可用。如果你想打印其他行末的词,也可以使用NF作为字段选项的锚。在这个命令中,我们使用NF-1选择最后一个字段.

?
1
2
3
$ awk '{print $(NF-1)}' numbers
4
four

删除Nth行

从文件中删除特定行应该是一个很简单的操作。在下面的例子中,确保是1到11的文件数,一个数字一行。使用命令,像是,第七行像是,"7d"命令就是删除第七行,示例如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
$ sed -i '7 d' numbers
$ cat numbers
1
2
3
4
5
6
8
9
10
11

你可以使用范围删除一个序列行,命令是【sed -i '7,9 d' numbers】,意思是删除7至9行。

删除空白行

删除文件中的空白行方法有很多,我使用最简单的一个。在下面的命令中,使用 ^$代替行空白。^ 代表一行的开始,$ 代表一行的结束,因此,一行的开始结束中,没有东西,为空白。

?
1
2
3
4
5
6
7
8
9
10
$ cat strings
This is the last day
of your life thus far
 
Mr. Logic
$ sed -i '/^$/d' strings
$ cat strings
This is the last day
of your life thus far
Mr. Logic

使用 sed命令(如下),可以删除空白行并备份原文件。

?
1
2
3
4
$ perl -i.bak -n -e 'print if /\S/' strings
$ ls -l strings*
-rw-r----- 1 shs faculty 53 Jan 4 2015 strings
-rw-r----- 1 shs faculty 54 Jan 4 18:36 strings.bak

值得注意的是,单个空白行删除,文件比原文件要小一个字符。

寻找符号链接

Unix系统中找符号链接也很简单,在查找命令中一个按文件类型查找的选项。查找符号链接的符号为"l"

?
1
2
3
$ find . -type l -ls
12763168 0 lrwxrwxrwx 1 shs staff 6 Jan 27 2013 ./hlinks/5 -> 5beers
12763423 0 lrwxrwxrwx 1 shs staff 4 Nov 23 2013 ./projects/tmp -> /tmp
查找不指向当前文件的符号链接

Unix系统可以创建不指向当前文件的符号链接,创建后删除原文件也是可以的。也可以创建多个符号链接。可以用查找命令和Perl命令追踪他。

?
1
find . -type l -print | perl -nle '-e || print' ;

确定体系结构(32或64位)

使用以下命令:

?
1
2
$ arch
i686

该命令在 Linux 下也能用。当我在Solaris下使用时,得到答案"sun4"。

颠倒字符

rev命令一次性完全颠倒字符,你可以将文本改成这样:

?
1
2
$ echo "dlroW ,olleH" | rev
Hello, World

也可以写文件名,然后完全颠倒。

?
1
2
3
4
5
$ rev strings
yad tsal eht si sihT
raf suht efil ruoy fo
 
cigoL .rM

计算文字出现次数

我们要考虑几个问题,一个词可能在另一个词中出现,比如"the"是"there"的一部分;一个词也可能在一行里多次出现。我们怎么计算呢?使用【grep -c "word" filename 】命令,他也是和【grep word filename】做差不多的事。他只会告诉你字在每行出现的次数,而不是全部出现的次数,我们可以看看下面的代码:

?
1
2
3
4
$ cat words
the the the the the then there they
$ grep -c the words
1

另一种选择,你可以这样做:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/bash
 
count=0
look4=$1
file=$2
 
for word in `cat $file`
do
if [ $word == "$look4" ]; then
((count++))
fi
done
echo $count

在这个脚本中,如果匹配我们所搜索的,for循环可以让我们看到每个字和增量数。不过该脚本不一定通用。

用一个词替换另一个词

完成这个工作,我使用以下命令:

?
1
sed s/ this /that/g filename

无论命令变得多复杂,你都可以在this,that间变换。我们来一个相对复杂的例子。使用 \b标记,确保将 "the" 变为 "why"。

?
1
2
3
4
$ cat words
the the the the the then there they
$ sed -e 's/\bthe\b/why/g' words
why why why why why then there they

看到了吗"the"无论在多长的句子里都没变。

如果你想改变"The" 或者 "the",你可以使用下面的命令:

?
1
2
3
4
$ sed -e 's/\bthe\b/why/g' words
The why why why why then there they
$ sed -e 's/\bthe\b/why/gi' words
why why why why why then there they

从subshell标记可用变量

如果不导出设置的shell,Subshells是不会认变量的。

?
1
2
3
4
5
6
7
8
9
10
11
$ cat showme
#!/bin/bash
 
echo $something
 
$ something= "well done"
$ ./showme
 
$ export something
$ ./showme
well done

转载请注明:文章转载自:慧都控件网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UNIX编程艺术》是一本经典的计算机图书,由Eric S. Raymond撰写。该书主要从UNIX系统的角度探讨了软件开发的技术和艺术,是UNIX程序员必备的参考书之一。 这本书的核心理念是:程序应该简洁、灵活且易于维护。作者通过深入探讨各种UNIX工具和技术,向读者介绍了如何编写高质量和高效率的软件。全书内容丰富,包括文件处理、进程管理、内存分配、系统调用等各个方面。读者可以学习到UNIX系统的基本原理和核心概念,以及如何通过合理使用UNIX工具和命令来提高开发效率。 这本书的魅力之一是作者丰富的实例和案例分析。他通过讲述自己的实际经验和对UNIX系统的深入理解,向读者展示了如何避免常见的编程陷阱和错误,并提供了一些建议和技巧。通过学习这些实际案例,读者可以提升自己的编程能力,培养良好的代码风格和理念。 此外,《UNIX编程艺术》还强调了软件工程师应该具备的一些重要技能,如搜索技巧、调试技巧和代码优化等。这些技能不仅对UNIX编程有用,对于任何软件开发工作都有一定的指导作用。 总之,《UNIX编程艺术》是一本对于想要系统学习UNIX系统和UNIX编程技术的读者来说非常有价值的书籍。它不仅详细介绍了UNIX系统的各个方面,还提供了大量实例和案例供读者参考。通过学习本书,读者可以在UNIX编程领域中获得更深入的理解,并提高自己的编程水平和技能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值