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

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید

نویسنده موضوع: نشوندن خط به خط از فایل اول جلوی فایل دوم ؟  (دفعات بازدید: 391 بار)

0 کاربر و 4 مهمان درحال مشاهده موضوع.

آفلاین سودو.

  • High Hero Member
  • *
  • ارسال: 3095
  • جنسیت : پسر
  • :(){ :|:& };:
درود مهربانان !!

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

file 1 :
ali
reza
avid

file 2 :
mohammad
mehrdad
behzad

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

با چه دستوری و چجوری ؟
آرچ و گنوم!

آفلاین behzad121

  • High Sr. Member
  • *
  • ارسال: 510
  • جنسیت : پسر
  • آرچ + گنوم
کد:
#!/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 رو نگرفتم ولی تا ۳ میره، خودتون یه جوری بگیریدش.
دیگه زیاد اینجا نیستم و بیشتر تو گروه‌های گنو/لینوکسی تلگرام کمک می‌کنم، دور از هیچ اذیت و حواشی. تلگرام: behdev@

آفلاین سودو.

  • High Hero Member
  • *
  • ارسال: 3095
  • جنسیت : پسر
  • :(){ :|:& };:
کد:
#!/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

  • High Sr. Member
  • *
  • ارسال: 510
  • جنسیت : پسر
  • آرچ + گنوم
کد:
#!/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 راه حل بهتری هست.
دیگه زیاد اینجا نیستم و بیشتر تو گروه‌های گنو/لینوکسی تلگرام کمک می‌کنم، دور از هیچ اذیت و حواشی. تلگرام: behdev@

آفلاین Issac

  • Hero Member
  • *
  • ارسال: 890
  • جنسیت : پسر
    • Mastodon
یه دستوری هست به اسم paste.
با اون میتونید این کار رو انجام بدید. مثلا:
$ paste file1 file2 > file3
اگه میخواید بین اسم و فامیلی‌ها فقط یه فاصله باشه از گزینه ‎-d استفاده کنید:
$ paste --delimiters=' ' file1 file2 > file3
این پست رو فرستادم که تعداد ارسال‌هام زیاد بشه.

آفلاین سودو.

  • High Hero Member
  • *
  • ارسال: 3095
  • جنسیت : پسر
  • :(){ :|:& };:
یه دستوری هست به اسم paste.
با اون میتونید این کار رو انجام بدید. مثلا:
$ paste file1 file2 > file3
اگه میخواید بین اسم و فامیلی‌ها فقط یه فاصله باشه از گزینه ‎-d استفاده کنید:
$ paste --delimiters=' ' file1 file2 > file3
اقا خیلی تشکر ، عالی ! میگم در مورد این تاپیک نظری ندارین برای awk ؟
https://forum.ubuntu-ir.org/index.php?topic=154430.0
اون حل شه به این ترفند نیازی ندارم ، چون راه حلی برای اون ندارم ، به این ترفند روی اوردم !
آرچ و گنوم!

آفلاین سودو.

  • High Hero Member
  • *
  • ارسال: 3095
  • جنسیت : پسر
  • :(){ :|:& };:
میخواستم اینو بسازم ! 😅😅😅

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 رو کنترل کرد یا ن ولی نتیجه ای نگرفتم ! پس یکم خلاقیت بخرج دادم و همچین چیزی از اب درومد ! 😅
البته میخوام چیزای دیگه هم اضافه کنم ، مثلا اطلاعاتی درمورد شاخه جاری !
آرچ و گنوم!