/ / Unix - połącz wszystkie wiersze w oddzielony przecinkami pojedynczy wiersz - linux, unix

Unix - połącz wszystkie wiersze w jeden oddzielony przecinkami wiersz - linux, unix

Mam następujące wartości w pliku w osobnych wierszach:
Kalifornia
Nowy Jork
Waszyngton
Karolina Południowa
Kansas

Jaki byłby skrypt unixowy do wyświetlania ich w pojedynczej linii (jak poniżej)
„Kalifornia”, „Nowy Jork”, „Waszyngton”, „Karolina Południowa”, „Kansas”
[Nie chcę mieć żadnego pliku pośredniego, aby to osiągnąć. Tylko kod echa jest w porządku]

Odpowiedzi:

1 dla odpowiedzi № 1

Użyj tego polecenia tr "n" "," < input_file

Do pojedynczego cytowania użyj sed -e "s/^/"/" input_file | sed -e "s/$/"/" | tr "n" ","

(Nie testowano pod kątem unikania pojedynczego / podwójnego cytatu)

Dla zmiennej NEW_VAR=$(echo $VAR | sed -e "s/^/"/" | sed -e "s/$/"/" | tr "n" ",")


0 dla odpowiedzi nr 2

Aby sformatować dane wyjściowe, musisz użyć awk. Robi sed and awk zadzwonić dzwonkiem?

The file <test.txt>
California
New York
Washington
South Carolina
Kansas

$ grep input file | awk "{print}" ORS=", "

California, New York, Washington, South Carolina, Kansas

Następnie połącz łańcuch i sprawdź, czy nie ma prawidłowego wyjścia.

z awk możesz spróbować tego

sudo awk -F"n" "{if(NR == 1) {printf "x27" $0 "x27"} else {print "," "x27" $0 "x27"}}" test.txt

"California","New York","Washington","South Carolina","Kansas"

Możesz także spróbować tego

sudo awk "BEGIN {RS=""}{gsub(/n/,"x27,x27",$0); print $0}" test.txt