我需要编写一个 shell 脚本来通过插入换行符来重新格式化文件。条件是当我们在文件中遇到逗号时应该插入一个换行符。
例如,如果文件delimiter.txt
包含:
this, 是一个文件,应该添加一个,换行符,当我们找到时,一个逗号。
输出应该是:
this
is a file
that should
be added
with a
line break
when we find a
a comma.
可以这样做吗grep
?awk
使用 GNU sed
:
sed 's/, /\n/g' your.file
输出:
this
is a file
that should
be added
with a
line break
when we find a
a comma.
注意:上述语法仅适用于具有\n
as 行分隔符的系统,如 Linux 和大多数 UNIX。
如果您需要 aa 脚本中的门户解决方案,请使用以下表达式,该表达式使用文字换行符,而不是\n
:
sed 's/,[[:space:]]/\
/g' your.file
感谢@EdMorten 的建议。
这tr
是为了
$ tr ',' '\n' <<< 'this, is a file, that should, be added, with a, line break, when we find, a comma.'
this
is a file
that should
be added
with a
line break
when we find
a comma.
或者,如果您必须使用 awk:
awk '{gsub(", ", "\n", $0)}1' delimiter.txt
使用 awk 的解决方案:
awk 1 RS=", " file
this
is a file
that should
be added
with a
line break
when we find
a comma.