複数行を1行にリンクし、csv出力ファイルに追加します。

複数行を1行にリンクし、csv出力ファイルに追加します。

複数のカンマ区切りファイルがあり、最初に行を1つにマージしてから、その行をoutput.csvファイルに追加できます。

ファイル1.txt:

CV-1999-0001,
CV-1999-0002,
CV-1999-0003,
CV-1999-0004,
CV-1999-0005,
  ...

ファイル2.txt:

CV-2000-0006,
CV-2000-0007,
CV-2000-0008,
....

出力.csv:

IDs
CV-1999-0001,CV-1999-0002,CV-1999-0003,CV-1999-0004,CV-1999-0005
CV-2000-0006,CV-2000-0007,CV-2000-0008,CV-2000-0009,CV-2000-0010

私はこれを試してみましたが、何も私が必要なことをしていないようです。まだ複数の行が表示されます。

echo $(cat /Users/...../"$ROWS".txt) | sed 's/ //g' > "$ROWS_new".txt


echo $(cat paste -s -d "" files-1.txt) | sed 's/ //g' >> output.csv

答え1

GNU awkを使用して複数文字のRSを実行し、各ファイルをメモリに読み込みます。

$ awk -v RS='^$' -F',\n' -v OFS=',' '{$1=$1}1' file-1.txt file-2.txt
CV-1999-0001,CV-1999-0002,CV-1999-0003,CV-1999-0004,CV-1999-0005,
CV-2000-0006,CV-2000-0007,CV-2000-0008,

あるいは、複数文字のRSおよびENDFILEにGNU awkを使用して、一度に1行ずつ読み込みます。

$ awk -v RS=',\n' -v ORS=',' '1; ENDFILE{printf "\n"}' file-1.txt file-2.txt
CV-1999-0001,CV-1999-0002,CV-1999-0003,CV-1999-0004,CV-1999-0005,
CV-2000-0006,CV-2000-0007,CV-2000-0008,

または、一度に1行ずつ読みたい場合は、awkを使用します。

$ awk '
    FNR==1 { printf "%s%s", prev, ors; ors=ORS }
    FNR>1  { printf "%s", prev }
    { prev=$0 }
    END { print prev }
' file-1.txt file-2.txt
CV-1999-0001,CV-1999-0002,CV-1999-0003,CV-1999-0004,CV-1999-0005,
CV-2000-0006,CV-2000-0007,CV-2000-0008,

入力ファイルの最後の行がsで終わると,簡単に削除できますが、質問の例の入力がsで終わるため、...入力ファイルが実際にsで終わっているかどうかはわかりません,。運動として。

答え2

一度試してください:

for ROW in ${ROWS}; do
    tr -d "\n" < "/Users/...../${ROW}.txt" \
    | sed -e 's/,$//'
done >> "output.txt"

答え3

sed提供-z()オプションを使用して--null-data; separate lines by NUL characters入力ストリーム全体を読みます。

sed -z 's/\n//g; s/\r/\n/' file1 <(echo $'\r') file2
CV-1999-0001,CV-1999-0002,CV-1999-0003,CV-1999-0004,CV-1999-0005,
CV-2000-0006,CV-2000-0007,CV-2000-0008,

そのオプションが利用できない場合はお試しください。

sed -f chabo.sed  file1 <(echo $'\r') file2
CV-1999-0001,CV-1999-0002,CV-1999-0003,CV-1999-0004,CV-1999-0005,
CV-2000-0006,CV-2000-0007,CV-2000-0008,

chabo.sedで存在します

:L
N
$!bL
s/\n//g
s/^M/\  
/

および()^M文字。<cr>0x0D

答え4

このソリューションにはどのような問題がありますか?

╰─ → $ paste -sd " " file1.txt file2.txt
CV-1999-0001, CV-1999-0002, CV-1999-0003, CV-1999-0004, CV-1999-0005,
CV-2000-0006, CV-2000-0007, CV-2000-0008,

関連情報