打印字符串的部分的命令?

13 浏览
0 Comments

打印字符串的部分的命令?

我有一个名为test的文件,

它包含一个字符串James Bond 007

我想要只打印出James Bond

我尝试了以下命令:

$ strings -n 2 test
$ sed -n '/James/,/Bond/p' test
$ awk '{print substr($1,10)}' test

0
0 Comments

问题:如何打印字符串的一部分?

问题的出现原因:用户想要在打印字符串时只输出部分内容,而不是整个字符串。

解决方法:

1. 使用awk打印前两个单词:

awk '{print $1, $2}' test

2. 使用bash的子字符串操作打印前十个字符:

   contents=$(cat test)
   echo "${contents:0:10}"
   

3. 或者使用awk打印前十个字符:

awk '{print substr($0, 1, 10)}' test

需要注意的是,$0表示整行内容,在使用substr()函数时需要同时提供起始索引和长度。在awk中,索引从1开始而不是0。

另外,在sed中,/James/,/Bond/是一个行范围表达式;它处理从包含"James"的行开始到包含"Bond"的行结束的所有行。它不会处理行的部分内容。

0