|
请教lmod的用法
lmod挺好用的,中文也能处理,虽然在屏幕显示时是乱码。
lmod用法很简单,直接运行就会显示简单的使用说明。
下面是我的一些理解,希望能对你有所帮助。欢迎指正
LMOD 1.3 Filter (c) 2002 Horst Schaeffer
Syntax: LMOD options string_with_tokens
Options:
/Ln[-m] line [range] to select (default: first non blank line)
/L[n]* all lines [starting n]
/E include empty input lines (default: no output)
/S.. delimiters for word extraction, instead of default (,;=)
/B.. as /S, but excluding blank space as delimiter
/Nn starting line number (for token [#]), default: /N001
Insert from source line (expression in square brackets):
[p,l $n U|L Rn] default []: complete line
p,l from position p, length l (default rest of line)
$n word number n ("!" for last word); optionally ±offset
$n:m range of words by number (blank space will be inserted)
U|L convert to upper|lower case
Rn right aligned in output field of size n
Other tokens:
[+] insert CR+LF
[-] omit CR+LF at end of output
[#] line number (digits acc. to option, default:3)
[=n] tab to position n in output line
[~n] ASCII code n (decimal)
[".."] quoted char/string (use for redirection symbols)
--------------------------------------------
选项说明:
/Ln[-m] line [range] to select (default: first non blank line)
要显示的行的范围,如省略则默认显示第一个非空行
如 /L2指显示第2行,/L5-9指显示第5-9行,/L-8表示显示第1-8行
/L[n]* all lines [starting n]
指显示所有的行,如/L*显示所有行,/L4*显示从第4行开始的所有行
/E include empty input lines (default: no output)
显示空白行。如省略则默认不会显示空白行。
/S.. delimiters for word extraction, instead of default (,;=)
指定单词的分隔符。默认有空格,逗号,分号,等号。如/S-表示指定连字符为分隔符,如good-
looking就会被认为是两个单词
/B.. as /S, but excluding blank space as delimiter
同上。但从默认分隔符中去掉了空格。如a test,for test只是两个单词而不是四个单词
/Nn starting line number (for token [#]), default: /N001
指定自动编行号的开始值。
Insert from source line (expression in square brackets):
要显示的内容都写在方括号里。
[p,l $n U|L Rn] default []: complete line
指定显示一行中的哪些字符。默认用[]表示显示整行
p,l from position p, length l (default rest of line)
指定显示的起始位置及长度。如[2,6]表示显示每行的第2-6个字符。[6]表示显示从第6个字符起的
所有字符
$n word number n ("!" for last word); optionally ±offset
指定显示第几个单词。感叹号表示最后一个单词。可以用加减号作偏移运算
如[$2]指显示第2个单词,[$!]指最后一个单词,[$!-2]指倒数第3个单词
$n:m range of words by number (blank space will be inserted)
指定显示哪几个单词(中间的空格也会显示)
如[$4:6]指显示第4-6个单词。
U|L convert to upper|lower case
将所选单词转换大小写
如 U 则为大写,如 L 则转换为小写
Rn right aligned in output field of size n
指定所选单词按一定长度靠右对齐
Other tokens:
其他一些特殊字符
[+] insert CR+LF
每显示一行后面加上回车换行,即插入一个空白行
[-] omit CR+LF at end of output
删除行末回车换行。即合并多行
[#] line number (digits acc. to option, default:3)
行自动编号,默认3位,可以用选项/n调整
如/N5 [#]表示从005开始编号,/N0001 [#]表示从0001开始四位数编号
[=n] tab to position n in output line
行首插入一定数量的空格
[~n] ASCII code n (decimal)
插入用ASCII码表示的字符,如[~3]表示一个心形
[".."] quoted char/string (use for redirection symbols)
将特殊字符转义为普通字符。如"/L*"只是普通三个字符,而不再表示所有行了。
将上面这些组合起来灵活使用,可以得到很多结果。
lmod一般用在管道|后面。结果的结果显示在屏幕上。如果要生成新文件只需再用>转向即可。
例子:
现有有一个文本文件 test.txt,要求是
给所有行加行号及空格
type test.txt | lmod /L* [#] []
取第8-9行的第二个单词小写,第四个单词大写且8位右对齐,在这两个单词之间加四位数行号
type test.txt | lmod /L8-9/N0001 [$2 L][#][$4 U R8]
写到新文件test2.txt中
type test.txt | lmod /L8-9/N0001 [$2 L][#][$4 U R8] > test2.txt |
|