انجمن‌های فارسی اوبونتو

کمک و پشتیبانی => انجمن عمومی => نویسنده: سودو. در 23 بهمن 1400، 03:15 ب‌ظ

عنوان: نشوندن خط به خط از فایل اول جلوی فایل دوم ؟
ارسال شده توسط: سودو. در 23 بهمن 1400، 03:15 ب‌ظ
درود مهربانان !!

فرض کنید من دو فایل دارم :

file 1 :
ali
reza
avid

file 2 :
mohammad
mehrdad
behzad

میخوان این دو تا بهم بچسبن به این شکل در فایل سوم ؛
file 3 :
ali mohammad
reza mehrdad
avid behzad

با چه دستوری و چجوری ؟
عنوان: پاسخ : نشوندن خط به خط از فایل اول جلوی فایل دوم ؟
ارسال شده توسط: behzad121 در 23 بهمن 1400، 04:26 ب‌ظ
کد:
#!/bin/bash

for i in 1 2 3 ; do
echo $(sed -n $(echo $i)p a) $(sed -n $(echo $i)p b)
done

فقط من خطوط فایل های a و b رو نگرفتم ولی تا ۳ میره، خودتون یه جوری بگیریدش.
عنوان: پاسخ : نشوندن خط به خط از فایل اول جلوی فایل دوم ؟
ارسال شده توسط: سودو. در 23 بهمن 1400، 04:30 ب‌ظ
کد:
#!/bin/bash

for i in 1 2 3 ; do
echo $(sed -n $(echo $i)p a) $(sed -n $(echo $i)p b)
done

فقط من خطوط فایل های a و b رو نگرفتم ولی تا ۳ میره، خودتون یه جوری بگیریدش.
با فانکشن و حلقه و اسکریپ در کل ، زیاد آشنایی ندارم و اصلا نمیدونم چیکار کردین و چیکار نکردین و انتظار دارین چیکار بکنم !!!

یه دستور دیدم تو اینترنت به اسم join ! اون کارش این نیست ؟
عنوان: پاسخ : نشوندن خط به خط از فایل اول جلوی فایل دوم ؟
ارسال شده توسط: behzad121 در 23 بهمن 1400، 04:37 ب‌ظ
کد:
#!/bin/bash

for i in 1 2 3 ; do
echo $(sed -n $(echo $i)p a) $(sed -n $(echo $i)p b)
done

فقط من خطوط فایل های a و b رو نگرفتم ولی تا ۳ میره، خودتون یه جوری بگیریدش.
با فانکشن و حلقه و اسکریپ در کل ، زیاد آشنایی ندارم و اصلا نمیدونم چیکار کردین و چیکار نکردین و انتظار دارین چیکار بکنم !!!

یه دستور دیدم تو اینترنت به اسم join ! اون کارش این نیست ؟
با دستور
sed -n Xp FILEمیشه خط X رو از FILE گرفت. حالا من اینو داخل یه حلقه گذاشتم تا اون عدد X بالاتر بره و خط بعدی رو نمایش بده.

با دستور join کار نکردم. صفحه man ش رو نگاه کردم و یکم باهاش ور رفتم ولی چیزی جز خطا ندیدم ولی تو اینترنت جستجو هم نکردم، احتمالا join راه حل بهتری هست.
عنوان: پاسخ : نشوندن خط به خط از فایل اول جلوی فایل دوم ؟
ارسال شده توسط: Issac در 24 بهمن 1400، 01:45 ب‌ظ
یه دستوری هست به اسم paste.
با اون میتونید این کار رو انجام بدید. مثلا:
$ paste file1 file2 > file3
اگه میخواید بین اسم و فامیلی‌ها فقط یه فاصله باشه از گزینه ‎-d استفاده کنید:
$ paste --delimiters=' ' file1 file2 > file3
عنوان: پاسخ : نشوندن خط به خط از فایل اول جلوی فایل دوم ؟
ارسال شده توسط: سودو. در 24 بهمن 1400، 01:50 ب‌ظ
یه دستوری هست به اسم paste.
با اون میتونید این کار رو انجام بدید. مثلا:
$ paste file1 file2 > file3
اگه میخواید بین اسم و فامیلی‌ها فقط یه فاصله باشه از گزینه ‎-d استفاده کنید:
$ paste --delimiters=' ' file1 file2 > file3
اقا خیلی تشکر ، عالی ! میگم در مورد این تاپیک نظری ندارین برای awk ؟
https://forum.ubuntu-ir.org/index.php?topic=154430.0
اون حل شه به این ترفند نیازی ندارم ، چون راه حلی برای اون ندارم ، به این ترفند روی اوردم !
عنوان: پاسخ : نشوندن خط به خط از فایل اول جلوی فایل دوم ؟
ارسال شده توسط: سودو. در 24 بهمن 1400، 03:14 ب‌ظ
میخواستم اینو بسازم ! 😅😅😅

l ()
{
    ls -AgGhX --group-directories-first --color=always --time-style="+" -I "perm" -I "size" -I "name" "$@" | tail +2 | awk '{print $1}' | cut -c 2-4 | sed 's/-/ /g' > ~/perm;
    ls -AgGhX --group-directories-first --color=always --time-style="+" -I "perm" -I "size" -I "name" "$@" | tail +2 | awk '{print $3}' > ~/size;
    ls -AgGhX --group-directories-first --color=always --time-style="+" -I "perm" -I "size" -I "name" "$@" | tail +2 | cut -c 20- > ~/name;
    paste -d"^" ~/perm ~/size ~/name | column -t -s "^" -o "  ";
    rm -fr ~/perm ~/size ~/name
}

راستش خیلی اینور اونور جستجو کردم ببینم میشه اجزای لانگ لیست ls رو کنترل کرد یا ن ولی نتیجه ای نگرفتم ! پس یکم خلاقیت بخرج دادم و همچین چیزی از اب درومد ! 😅
البته میخوام چیزای دیگه هم اضافه کنم ، مثلا اطلاعاتی درمورد شاخه جاری !