Algorithm 控件与x2B之间的区别是什么;M字符和a'\r';性格我们怎么写呢?
Algorithm 控件与x2B之间的区别是什么;M字符和a'\r';性格我们怎么写呢?,algorithm,unix,awk,ksh,gawk,Algorithm,Unix,Awk,Ksh,Gawk,'control+M'字符和'\r'字符之间的区别是什么 两者不一样。我们如何像写“\r”一样在gawk中写control+M字符 我的目标是告诉gawk,将'comtrol+M'字符作为RS(记录分隔符) 对于“\r”,我们可以写为 gawk -v RS='\r' 'code goes here' file gawk -v RS='\r' -v ORS='\n' '{gsub(/\n/,"",$0)} {print $0}' rawfile > newfile_slashr_remov
'control+M'
字符和'\r'
字符之间的区别是什么
两者不一样。我们如何像写“\r”一样在gawk中写control+M字符
我的目标是告诉gawk,将'comtrol+M'字符作为RS(记录分隔符)
对于“\r”,我们可以写为
gawk -v RS='\r' 'code goes here' file
gawk -v RS='\r' -v ORS='\n' '{gsub(/\n/,"",$0)} {print $0}' rawfile > newfile_slashr_removed
这里不是'\r'
,而是'comtrol+M'
背景:
$ grep '\r' raw_file | wc
1468 44570 2641642
$ grep '^M' raw_file | wc
1463 44522 2638958
在我使用上述代码并获取输出并将其放入文件后
$ grep '^M' WDY_worker_incr_newfile | wc
0 0 0
$ grep '\r' WDY_worker_incr_newfile | wc
1464 44570 2640175
这是怎么回事?如果不写
^M
,请先按Ctrl-V键,然后按Ctrl-M组合键。初始Ctrl-V使shell命令行编辑“escape”成为下一个键 — 通常,Ctrl-M将被映射到与shell中的Return相同的操作,但是使用它,您可以在命令行中键入文本回车
这样,您就可以通过键入RS='
+Ctrl-V+Ctrl-M+'
等来编写RS='^M'
和grep'^M'
在现代shell(mksh、AT&T ksh93、gnubash等)上,您还可以编写RS=$'\r'
和grep$'\r'
,相反,美元撇号引号插入了C风格的转义序列
大多数工具不允许您只编写'\r'
;printf和tr是例外情况,可能有也可能没有其他例外情况,这取决于所使用的操作系统和工具(例如,GNU sed允许它们出现在比BSD sed更多的地方)
您将其标记为
unix
,但另一个注意事项是,在基于DOS的环境(如Cygwin32)中,^M^J
是行分隔符,而不仅仅是在正确的unix上,因此如果您想重复使用回车符,工具可能会出现错误。您不需要编写^M
,按Ctrl-V键,然后按Ctrl-M组合键。初始Ctrl-V使shell命令行编辑“escape”成为下一个键 — 通常,Ctrl-M将被映射到与shell中的Return相同的操作,但是使用它,您可以在命令行中键入文本回车
这样,您就可以通过键入RS='
+Ctrl-V+Ctrl-M+'
等来编写RS='^M'
和grep'^M'
在现代shell(mksh、AT&T ksh93、gnubash等)上,您还可以编写RS=$'\r'
和grep$'\r'
,相反,美元撇号引号插入了C风格的转义序列
大多数工具不允许您只编写'\r'
;printf和tr是例外情况,可能有也可能没有其他例外情况,这取决于所使用的操作系统和工具(例如,GNU sed允许它们出现在比BSD sed更多的地方)
您将其标记为
unix
,但是,正如另一个注意事项,在基于DOS的环境(如Cygwin32)中,^M^J
是行分隔符,而不仅仅是在正确的unix上,^J
,因此,如果您想重复使用回车符,工具可能会出现错误。printf“^M”\od
打印的内容与printf\r>相同| od
。可能使用grep-c
而不是grep…|wc
为什么您认为control-M和\r
不同?Henry,我已经在同一个文件上向您展示了grep命令的结果。结果是不同的。你确定grep'^M'
没有以M
开头的行吗?\r
的十进制值是13(man ascii
),恰巧M
是第13个字母。printf“^M”od
打印的字符与printf”\r“\od
打印的字符相同。可能使用grep-c
而不是grep…|wc
为什么您认为control-M和\r
不同?Henry,我已经在同一个文件上向您展示了grep命令的结果。结果不同。您确定grep'^M'
没有以M
开头的行吗?\r
的十进制值是13(man ascii
),恰巧M
是第13个字母。