Сценарий оболочки - новая строка после запятой? - PullRequest
1 голос
/ 07 ноября 2011

У меня есть сценарий оболочки, который я написал, который захватывает список имен из местоположения, и каждое имя отделяется запятой, <- мне было интересно, могу ли я что-нибудь написать, чтобы составить список имен, который хранится в текстовом файле для отступа новой строки после каждой запятой? </p>

Например, список имен, который сохраняется в текстовом файле, выглядит следующим образом:

"Red", "Blue", "Green"

И я хочу, чтобы они выглядели так:

Red
Blue
Green

Данные извлекаются из html-кода с веб-сайта, поэтому они содержат цитаты и запятые вокруг них, если возможно хотя бы отформатировать их в новую строку, это было бы здорово. Спасибо, если вы поможете.

Ответы [ 5 ]

3 голосов
/ 07 ноября 2011

Просто используйте sed .

% echo '"Red", "Blue", "Green"' | sed -e 's/\"//g' -e 's/, /\n/g'
Red
Blue
Green
3 голосов
/ 07 ноября 2011

Предполагая, что разделенная запятыми дата находится в переменной $ data, вы можете указать bash разделить ее, установив $ IFS (переменная разделителя списка) в ',' и используя цикл for:

TMPIFS=$IFS #Stores the original value to be reset later
IFS=', '

echo '' > new_file #Ensures the new file is empty, omit if the file already has contents

for item in $data; do
item=${item//'"'/} #Remove double quotes from entries, use item=${item//"'"/} to remove single quotes
echo "$item" >> new_file #Appends each item to the new file, automatically starts on a new line
done

IFS=$TMPIFS #Reset $IFS in case other programs rely on the default value

Это даст вам вывод в желаемом формате, хотя и с пустой пустой линией.

2 голосов
/ 07 ноября 2011
awk -F, '{for(i=1;i<=NF;i++){ print $i;}}'
1 голос
/ 07 ноября 2011

см. Ниже командную строку:

kent$  echo '"Red", "Blue", "Green"'|sed 's/, /\n/g'
"Red"
"Blue"
"Green"
0 голосов
/ 07 ноября 2011

\ n для новой строки. Как "Красный \ n", "Синий \ n", "Зеленый \ n"

...