私はこのファイルを持っています:
'dog', 'cat', 'horse', 'turtle'
この行を次に変換したいと思います。
dog
cat
horse
turtle
カンマを区切り文字として使用し、trコマンドを使用すると、次のようにできます。
tr -s ',' '\n' < file
出力を含む
'dog'
'cat'
'horse'
'turtle'
ただし、区切り文字として使用すると機能しません', '
。
tr -s '\', \'' '\n' < file
一重引用符をエスケープするために二重バックスラッシュを使用しても、まだ機能しません。端末から得られる唯一の出力は>
。
目的の出力を得るために一重引用符を正しくエスケープする方法は?
ベストアンサー1
入力を引用符付きCSVとして処理し、各カンマ区切り文字の後にスキップできるスペースを追加し、引用符で標準二重引用符の代わりに一重引用符を使用してcsvformat
データ型を再指定できます。
$ csvformat -S -q "'" -D $'\n' file
dog
cat
horse
turtle
これはcsvformat
、withを使用して-S
各区切り文字の後の最初の空白文字をスキップし、-q "'"
入力引用符文字を一重引用符に設定し、出力フィールド区切り文字を改行-D $'\n'
文字に設定します。
これによりファイルが再フォーマットされます。
埋め込み改行を使用するすべてのフィールドは、埋め込み二重引用符を含むフィールドと同様に、出力から引用されます。