انجمنهای فارسی اوبونتو
کمک و پشتیبانی => انجمن عمومی => نویسنده: سودو. در 23 بهمن 1400، 03:15 بظ
-
درود مهربانان !!
فرض کنید من دو فایل دارم :
file 1 :
ali
reza
avid
file 2 :
mohammad
mehrdad
behzad
میخوان این دو تا بهم بچسبن به این شکل در فایل سوم ؛
file 3 :
ali mohammad
reza mehrdad
avid behzad
با چه دستوری و چجوری ؟
-
کد:
#!/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 رو نگرفتم ولی تا ۳ میره، خودتون یه جوری بگیریدش.
-
کد:
#!/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 ! اون کارش این نیست ؟
-
کد:
#!/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 راه حل بهتری هست.
-
یه دستوری هست به اسم paste.
با اون میتونید این کار رو انجام بدید. مثلا:
$ paste file1 file2 > file3
اگه میخواید بین اسم و فامیلیها فقط یه فاصله باشه از گزینه -d استفاده کنید:
$ paste --delimiters=' ' file1 file2 > file3
-
یه دستوری هست به اسم paste.
با اون میتونید این کار رو انجام بدید. مثلا:
$ paste file1 file2 > file3
اگه میخواید بین اسم و فامیلیها فقط یه فاصله باشه از گزینه -d استفاده کنید:
$ paste --delimiters=' ' file1 file2 > file3
اقا خیلی تشکر ، عالی ! میگم در مورد این تاپیک نظری ندارین برای awk ؟
https://forum.ubuntu-ir.org/index.php?topic=154430.0
اون حل شه به این ترفند نیازی ندارم ، چون راه حلی برای اون ندارم ، به این ترفند روی اوردم !
-
میخواستم اینو بسازم ! 😅😅😅
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 رو کنترل کرد یا ن ولی نتیجه ای نگرفتم ! پس یکم خلاقیت بخرج دادم و همچین چیزی از اب درومد ! 😅
البته میخوام چیزای دیگه هم اضافه کنم ، مثلا اطلاعاتی درمورد شاخه جاری !