Linux 用于打印字符串的一部分的命令?
我有一个文件名Linux 用于打印字符串的一部分的命令?,linux,macos,unix,terminal,command,Linux,Macos,Unix,Terminal,Command,我有一个文件名test, 它包含一个字符串James Bond 007, 我只想打印《詹姆斯·邦德》。 我尝试了以下命令: $ strings -n 2 test $ sed -n '/James/,/Bond/p' test $ awk '{print substr($1,10)}' test 要打印前两个单词,可以使用awk: awk '{print $1, $2}' test awk '{print substr($0, 1, 10)}' test 要打印前十个字符,可以将文件内容放
test
,
它包含一个字符串James Bond 007
,
我只想打印《詹姆斯·邦德》。
我尝试了以下命令:
$ strings -n 2 test
$ sed -n '/James/,/Bond/p' test
$ awk '{print substr($1,10)}' test
要打印前两个单词,可以使用
awk
:
awk '{print $1, $2}' test
awk '{print substr($0, 1, 10)}' test
要打印前十个字符,可以将文件内容放入变量中,然后使用bash
子字符串操作:
contents=$(cat test)
echo "${contents:0:10}"
或在awk
中:
awk '{print $1, $2}' test
awk '{print substr($0, 1, 10)}' test
请注意,$0
表示整行,您必须为substr()
提供起始索引和长度。awk
中的索引从1
开始,而不是从0
开始
在
sed
中,/James/,/Bond/
是行范围表达式;它处理从包含James
的行开始到包含Bond
的行的所有行。它不只是处理一部分行。打印内容的一般标准是什么?前两个词,前10个字符?其中任何一个都可以,但我想知道这两个:)echo James Bond 007 | awk'{print$1”“$2}';echo James Bond 007 | cut-d”“-f1,2的可能副本等。