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 № 1Uż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