次のCSVファイルがあります。
$ cat mycsv.csv
"1/30/2017 11:14:55 AM","I","M","k6.0.1","E","jim","JimK","JIM","[email protected]","A","6.0.12”,”A”,”N”
"1/30/2017 11:14:55 AM","I","M","k6.0.1","E","jim","JimK","JIM","[email protected]","A","6.0.12”,”A”,”N”
"1/30/2017 11:14:55 AM","I","M","k6.0.1","E","jim","JimK","JIM","[email protected]","A","6.0.12”,”A”,”N”
次はなぜすべての行を印刷しないのですか?
$awk -F "," '{printf}' mycsv.csv
","M","k6.0.1","E","jim","JimK","JIM","[email protected]","A","6.0.12”,”A”,”N””
$awk -F "," '{printf $0}' mycsv.csv
","M","k6.0.1","E","jim","JimK","JIM","[email protected]","A","6.0.12”,”A”,”N””
両方ともすべての行を印刷する必要があります。そうですか?私は何が間違っていましたか?
答え1
printf
Cprintf()
またはprintf
ユーティリティまたはawk
'の最初の引数には1がprintf()
必要です。滞在。
あなたが望むもの:
awk '{printf "%s", $0}'
ここで。レコード区切り文字を出力する必要がない場合は、次のこともできます。
awk -v ORS= '{print}' < mycsv.csv
でも:
awk -v ORS= 1 < mycsv.csv
({print}
これは基本的な作業です。本物デフォルト条件ですが、少なくとも1つのジョブまたは条件を指定する必要があります1
。本物)。
しかし、ここではtr
十分です。
tr -d '\n' < mycsv.csv
それともまだ欲しいなら一つ出力がまだテキストになるように末尾の改行:
paste -sd '\0' mycsv.csv
ファイルにはMicrosoftスタイルのCRLF行区切り文字も含まれているため、CR文字も削除することをお勧めします。
tr -d '\r\n' < mycsv.csv
awk
または、複数の単一文字実装をサポートするCRLFシーケンスを使用してくださいRS
(macOSを含むgawk
)。mawk
awk
awk -v RS='\r\n' -v ORS= 1 < mycsv.csv
または:
awk -v RS='\r?\n' -n ORS= 1 < mycsv.csv
つまり、\r
Unix または MS-DOS 行区切り文字を処理することを選択できます。
dos2unix
または、最初または同じものを使用してd2u
ファイルをUnix形式に変換します。
ノート
フォーマットパラメータは1つprintf
必要です。awk
公共施設の標準仕様。入力gawk
してmawk
省略するとエラーが発生します。busybox
awk
元の実装(onなど)から派生したものとprintf ""
同じです(まだ形式と見なされ、文字が含まれているとエラーが発生するため、あまり役に立ちません)。awk
macOS
printf $0
$0
%