6

改行を挿入してファイルを再フォーマットするシェル スクリプトを作成する必要があります。条件は、ファイル内でコンマが検出されたときに改行を挿入することです。

たとえば、ファイルに次のものdelimiter.txtが含まれているとします。

これはファイルであり、見つけた場合はカンマで改行して追加する必要があります。

出力は次のようになります。

this
is a file
that should
be added
with a
line break
when we find a
a comma.

これを行うことができますgrepawk

4

4 に答える 4

8

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注: 上記の構文は、Linux およびほとんどの UNIX のような行区切り文字を持つシステムでのみ機能します。

スクリプトでポータル ソリューションが必要な場合は、 の代わりにリテラル改行を使用する次の式を使用します\n

sed 's/,[[:space:]]/\
/g' your.file

このアドバイスをくれた@EdMortenに感謝します。

于 2013-08-28T11:09:21.630 に答える
6

これは何のためのもの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
于 2013-08-28T11:09:56.943 に答える
3

awk を使用したソリューション:

awk 1 RS=", " file
this
is a file
that should
be added
with a
line break
when we find
a comma.
于 2013-08-28T11:28:36.097 に答える
0

perlを使用したソリューションは次のとおりです。

perl -pe 's#,#\n#g'

OpenBSD または OS X で適切に動作するサンプルを次に示します。

% echo 'a,b,c,d,e' | perl -pe 's#,#\n#g'
a
b
c
d
e
%

たとえば、以前の sed ソリューションとは異なり、同じ検索/置換スニペットがOpenBSD または OS Xの BSD sedでは機能しないため、この perl はどこでも機能します。

% echo 'a,b,c,d,e' | sed -E 's#,#\n#g'
anbncndne
%
于 2019-03-22T09:49:50.247 に答える