入力の各行を角かっこで囲みます。最初の角かっこを追加できます。しかし、エンディングではありません。末尾の「]」は次の行に移動し、行をクリップします。
例 - これが私のスクリプトです -
cat file.csv | awk 'BEGIN {FS=","; OFS=","} {print $1,"["$6,$7"]"}'
op は - ]ABC,[CD,EF
ありがとう
入力の各行を角かっこで囲みます。最初の角かっこを追加できます。しかし、エンディングではありません。末尾の「]」は次の行に移動し、行をクリップします。
例 - これが私のスクリプトです -
cat file.csv | awk 'BEGIN {FS=","; OFS=","} {print $1,"["$6,$7"]"}'
op は - ]ABC,[CD,EF
ありがとう
これは、行末の問題である可能性があります。行は、それ自体CR/LF
ではなく(キャリッジリターンとラインフィード)で終了LF
しているためです。実際に出力されているのは次のとおりです。
ABC,[CD,EF<CR>]
そして、最後の文字CR
を出力する前に、カーソルを強制的に行頭に戻しています。]
同様の効果が次のように表示されます。
pax> awk -v x='abcdef^M' 'END {print "123 ["x"]"}' </dev/null
]23 [abcdef
ここで、^M
は実際には文字であり、CR
, で入力します。CTRL-V
CTRL-M
それを修正する方法については、ファイル自体を修正して危険な行末を取り除くかgsub
、行の最後のフィールドで次のようなものを使用してCR
文字を取り除くことができます。
pax> # this bit here ----------vvvvvvvvvvvvvvvv
pax> awk -v x='abcdef^M' 'END {gsub("^M","",x);print "123 ["x"]"}' </dev/null
123 [abcdef]
あなたの場合、それは次のようになります。
awk 'BEGIN {FS=","; OFS=","} {gsub("^M","",$7);print $1,"["$6,$7"]"}' file.csv
ファイル名自体を完全に処理できるcat file.csv |
ため、ここではまったく不要であることに注意してください。awk
私自身、可能であればファイルを修正したいと思います。
上記のファイルを修正する方法は多数あります (使用できるツールによって異なります) 。この優れた回答を参照してください。