几个AIX命令搞定Word下载.docx
《几个AIX命令搞定Word下载.docx》由会员分享,可在线阅读,更多相关《几个AIX命令搞定Word下载.docx(39页珍藏版)》请在冰豆网上搜索。
上下文地址是正则表达式,它与那些在ed命令中使用的表达式相似,不过存在下列的差别:
您可以从模式中选择字符定界符。
表达式的常规格式是:
\?
pattern?
其中?
(问号)是可选择的字符定界符。
除了空格或换行符,您可以从当前的语言环境中选择任何字符。
只有在第一次出现?
(问号)时才需要\(反斜杠)字符。
模式的缺省格式如下:
/pattern/
\(反斜杠)字符不是必需的。
\n序列与模式空间中的换行符匹配,除了终止的换行符。
。
(句号)与除终止的换行符之外的任何字符匹配。
也就是说,与ed命令不同(ed命令不能匹配行中间的字符),sed命令能够匹配模式空间中的换行符。
某些叫做addressed的命令允许您指定该命令适用的一行或多行。
下列的规则适用于寻址命令:
没有地址的命令行选择每一行。
具有以上下文格式表示的地址的命令行会选择与该地址匹配的每一行。
具有以逗号分割的两个地址的命令行选择从与第一个地址匹配的第一行到与第二个地址匹配的下一行的整个范围。
(如果第二个地址小于或等于第一个选择的行号,那么只会选择一行。
)此后就会重复这个过程以再次寻找第一个地址。
标志
-eScript使用Script变量作为编辑脚本。
如果您只使用-e标志,而不使用-f标志,那么就可以省略-e标志。
-fScriptFile使用ScriptFile变量作为编辑脚本源。
ScriptFile变量是适用于File
参数的一组准备好的编辑命令。
-n抑制所有正常写入标准输出的信息。
注:
您可以指定多个-e和-f标志。
将所有的子命令以指定的顺序添加到脚本,而不管其来源。
sed子命令
sed命令包含下列的sed脚本子命令。
子命令前的圆括号内的数字表示子命令可允许地址的最大数。
伴随a\,c\以及i\子命令的Text变量能够在不止一行上继续,提供了所有行(但是最后以引用换行符的\(反斜杠)
结束)。
文本中的反斜杠视为与s命令中的替换字符串相似,并且能够用于保护初始的空格和制表符,使其免受在处理每个脚本行时被删除。
RFile和
WFile变量必须结束命令行,并且必须在前面有一个空格。
在开始处理前创建每个WFile变量。
sed命令能够处理模式文件中多达999个子命令。
(1)a\
Text在读取下一个输入行之前在输出中放置Text变量。
(2)b[label]分支具有label变量的:
命令。
如果label变量是空的,那就分支到脚本的末尾。
(2)c\
Text删除模式空间。
用0或1地址或2地址范围的末尾,将Text变量放置在输出中,然后开始下一个周期。
(2)d删除模式空间,然后开始下一个周期。
(2)D删除通过第一个换行符的模式空间的初始段,然后开始下一个周期。
(2)g用保留空间的内容替换模式空间的内容。
(2)G将保留空间的内容附加到模式空间。
(2)h用模式空间的内容替换保留空间的内容。
(2)H将模式空间的内容附加到保留空间。
(1)i\
Text在将下一行读到模式空间之前将Text变量写到标准输出。
(2)l将模式空间写到标准输出中,它将不可显示字符显示为4位十六进制值。
将长行折叠起来。
(2)l以视觉明确的格式将模式空间写到标准输出中。
将字符\\\,\\a,\\b,\\f,\\r,\\t以及\\v
以相应的转义序列写入。
以每个字节(最重要的字节首先表示)用一个三位八进制数字(前面有反斜杠字符)表示的方式写入不可打印的字符。
该格式也用于多字节字符。
该子命令折叠长行。
其后有换行符的反斜杠表示折叠点。
折叠出现在第
72列位置。
$(美元符号)标记每行的结束。
(2)n如果不抑制缺省的输出,那就将模式空间写到标准输出。
它用输入的下一行替换模式空间。
(2)N将输入的下一行附加到具有嵌入式换行符(更改当前的行号)的模式空间。
您可以用它来搜索分割成两行的模式。
(2)p将模式空间写到标准输出。
(2)P将通过第一个换行符的模式空间的初始段写到标准输出。
(1)q分支到脚本的结束。
它不启动新的周期。
(2)rRFile读取RFile变量的内容。
在读取下一输入行之前将内容放置到输出。
(2)s/pattern/replacement/flags
用replacement字符串代替在模式空间中首次出现的pattern
参数。
除了空格或换行符,在s子命令之后显示的任何字符都能代替/(斜杠)分隔符。
请参阅ed命令的『模式匹配』部分。
flags变量的值必须是零或以下的值:
g
代替pattern参数所有非重叠的实例,而不只是第一个。
n
仅代替第n次出现的pattern参数。
p
如果作了替代,那就将模式空间写到标准输出。
wWFile
如果作了替代,将模式空间写到WFile变量。
将模式空间附加到WFile变量。
如果sed脚本的先前写入没有创建WFile变量,那么
sed命令就会创建它。
(2)tlabel如果最近读取t子命令的输入行时做了任何替代的话,则分支在脚本文件中的:
label变量。
如果您不指定label
变量,那么就将控制传向脚本的末尾。
(2)wWFile将模式空间附加到WFile变量。
(2)x交换模式空间和保留空间的内容。
(2)y/pattern1/pattern2/
将所有pattern1变量中出现的字符代替为相应的pattern2字符。
在
pattern1和pattern2变量中的字符数必须相等。
换行符用\n表示。
(2)!
sed-cmd只将指定的sed子命令应用于没有选择地址的行。
(0):
label标记b和t子命令引用的分支点。
该标号可以是任何八个或更少字节的序列。
(1)=将当前行号作为一行写到标准输出。
(2){subcmd
.
}组子命令以{}(花括号)封装。
(0)忽略空命令。
(0)#如果#(镑符)是出现在脚本文件的某行的第一个字符,那么就会将整个行视为注释,但有一个例外。
只对脚本文件的第一行来说,如果在#后的字符是
n,就会抑制缺省的输出。
忽略#n之后的行的剩余部分。
出口状态
该命令返回以下出口值:
0成功完成。
>
0发生错误。
示例
要执行全局更改,输入:
sed"
s/happy/enchanted/g"
chap1>
chap1.new
该命令序列用单词enchanted代替每个在文件chap1中出现的单词happy。
它将已编辑的版本写入名为chap1.new的分离文件。
s
子命令末尾的g字符告诉sed命令在每行作尽可能多的替代。
如果没有g字符,那么sed命令就只会代替行中首次出现的单词happy。
sed命令作为过滤器操作。
它从标准输入或在命令行命名的文件中(本例中是
chap1)读取文本、修改文本、并将其写入标准输出。
不同于大多数的编辑器,它不替换原始文件。
在流水线使用时,这会使sed命令成为强大的命令。
要在流水线中将sed命令用作过滤器,输入:
prchap2|sed"
s/Page*[0-9]*$/(&
)/"
|enq
该命令序列在打印文件chap2之前将页码封装在括号中。
pr命令将标题和页码放置在每页的顶部,然后sed命令将页码放在括号中,enq
命令打印已编辑的列表。
sed命令模式/Page*[0-9]*$/与出现在行末的页码匹配。
s子命令将其更改为(&
),其中&
代表匹配的页码。
要显示文件的选择的行,输入:
sed-n"
/food/p"
chap3
sed-n显示文件chap3中包含单词food的每一行。
通常,sed命令将编辑过的每行复制到标准输出。
-n使sed
命令停止这样做。
然后,您使用子命令(如p)写入文本的特定部分。
如果没有-n标志,该示例会显示文件chap3中的所有行,并显示包含food
的每个行两次。
要执行复杂的编辑,输入:
sed-fscript.sedchap4>
chap4.new
当您想做复杂的事情时,该命令序列创建sed
脚本文件。
然后您在使用脚本之前就可以对其进行测试和修改。
您也可以重用脚本来编辑其它文件。
用交互式文本编辑器创建脚本文件。
样本sed脚本文件:
:
join
/\\$/{N
s/\\\n//
bjoin
}
sed脚本将每个以\(反斜杠)结束的行连接到其后的一行。
首先,模式/\\$/选择以\结束的行,其用于以{}(花括号)封装的命令组。
然后
N子命令附加下一行,嵌入换行符。
s/\\\n//删除\和嵌入的换行符。
最后,bjoin分支回到标号:
join以在新连接的行末检查\
如果没有分支,那么sed命令在检查第二个\之前写入连接的行并读取下一行。
N子命令引起sed命令立刻停止,如果没有更多的输入行的话(也就是说,如果N
子命令读取文件结束符的话)。
在停止前它不将模式空间复制到标准输出。
这意味着如果输入的最后行结束于\,就不将其复制到输出。
要将现有的文件(oldfile)复制到新的文件(newfile),并将所有出现的testpattern文本字符串替换为$REPL
外壳程序变量的内容,输入:
catoldfile|sed-e"
s/testpattern/$REPL/g"
newfile
GREP用途
搜索文件中的模式。
grep[-E|-F][-i][-h][-s][-v][-w][-x][-y][[[-b][
-n]]|[-c|-l|-q]][-p[分隔符