إزالة فواصل الخط في بورن شل من المتغير
-
21-09-2019 - |
سؤال
في بورن شل لدي ما يلي:
VALUES=`some command that returns multiple line values`
echo $VALUES
يشبه:
"ONE"
"TWO"
"THREE"
"FOUR"
أود أن تبدو مثل:
"ONE" "TWO" "THREE" "FOUR"
هل أستطيع مساعدتك؟
المحلول
echo $VALUES | tr '\n' ' '
نصائح أخرى
طريقة أخرى ، إذا كنت لا تريد فقط طباعة الكود الخاص بك ولكن قم بتعيينه إلى متغير ، وليس لديك مساحة زائفة في النهاية:
$ var=$(tail -1 /etc/passwd; tail -1 /etc/passwd)
$ echo "$var"
apache:x:48:48:Apache:/var/www:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
$ var=$(echo $var)
$ echo "$var"
apache:x:48:48:Apache:/var/www:/sbin/nologin apache:x:48:48:Apache:/var/www:/sbin/nologin
الحل المقبول لم ينجح بالنسبة لي (على OS X Yosemite). هذا ما استخدمته:
echo -n $VALUES
خيار آخر هو استخدام xargs
(الذي يحافظ على خط جديد نهائي - بدلاً من مساحة زائدة محتملة باستخدام tr
):
echo $VALUES | xargs
printf '%s\n' 1 2 3 4 5 | xargs
yozloy: كيفية تمرير سلسلة هرب باستخدام <<<
tr -d '\n' <<< "`printf '%b' 'a line with line feed \n'`"
لا تنتمي إلى StackOverflow