如何更改文件的记录或字段分隔符

如何更改文件的记录或字段分隔符

如何更改文件的记录分隔符?例如,通过将记录分隔符从换行符更改为空格,将多行连接成一行。另一个示例是通过将记录分隔符从空格更改为换行符,将一行在其空格处拆分为多行。什么环境变量控制记录分隔符?国税局和ORS?

同样,如何更改文件的字段分隔符?环境变量 IFS OFS 可以使用吗cat

答案1

记录和字段分隔符行为可以在肯定诸如awk、 和 之类的程序很少是通过环境变量完成的。诸如 之cat类的常见实用程序不具有此类功能:只有记录在案的程序(例如cut)才有使用不同记录或字段分隔符的选项。

awk是所提到的最灵活的,可以为记录分隔符和字段分隔符设置变量:

FS
输入字段分隔符正则表达式; A<space>默认情况下。
OFS
print语句输出字段分隔符;<space>默认情况下。
ORS
print语句输出记录分隔符; A<newline>默认情况下。
RS
的字符串值的第一个字符RS应为输入记录分隔符; A<newline>默认情况下。如果RS包含多个字符,则结果未指定。如果RS为空,则记录由由以下组成的序列分隔<newline>加一个或多个空行、前导或尾随空行不得导致输入的开头或结尾出现空记录,并且<newline>无论 的值FS是什么,都应始终是字段分隔符。

您可以在脚本中设置这些变量,例如,

awk ' BEGIN { RS=" "; } { print; }' < inputfile

在新行上打印文件的每个单词。您还可以使用以下-v选项分配给任何变量:

awk -v  RS=" " '{ print; }' < inputfile

最后,awk还有一个-F与变量相同的选项(输入字段分隔符)FS

进一步阅读:

答案2

如果您只关心替换字符,您可以查看该tr实用程序(代表“翻译”)。例如,要将换行符转换为空格,您可以使用:

tr '\n' ' ' < your_input_file

同样,要将空格转换为换行符,请使用:

tr ' ' '\n' < your_input_file

请注意,tr读取自stdin,因此您要么需要<像我在这些示例中所做的那样使用输入重定向 ( ) ,要么将您的输入通过管道传输到其中(使用|)。

相关内容