انجمنهای فارسی اوبونتو
کمک و پشتیبانی => انجمن عمومی => نویسنده: mohammadreza73 در 29 امرداد 1394، 04:49 بظ
-
سلام یه فایل متنی دارم میخوام این فایل یه .conf هستش تو لاگ هاش میگه خط 75 مشکل داره
بخوام دستوری بزنم که از اون فایل خط 75 رو نشون بده باید چه کامندی بزنم
ستون رو بخواییم چی ؟
جفتش باهم چی
-
$ cat -n | grep 75
-
پاسخ قبلی اشتباه است!
sed:
sed '75!d' file
awk:
awk 'NR==75' file
ستون با cut یا awk
awk 'FNR==75{ print $3}' file
ستون ۳ خط ۷۵
و جالب تر اینکه مشکل شما رو حل کرده.
http://stackoverflow.com/questions/19327556/get-specific-line-from-text-file-using-just-shell-script (http://stackoverflow.com/questions/19327556/get-specific-line-from-text-file-using-just-shell-script)
-
سلام . اگر توی ادیتور vi / vim بازش کنی میتونی با زدن
:75
بری سر خط ۷۵ . اما برای اینکه بتونی برسی سر کلمه دلخواه ایده ای ندارم .فقط با زدن w کرسر یه کلمه میره جلو !
----- اینم بعدا اضافه کردم ------
با دستورless هم میشه !
less +75g file_name
-
پاسخ قبلی اشتباه است!
sed:
sed '75!d' file
awk:
awk 'NR==75' file
ستون با cut یا awk
awk 'FNR==75{ print $3}' file
ستون ۳ خط ۷۵
و جالب تر اینکه مشکل شما رو حل کرده.
http://stackoverflow.com/questions/19327556/get-specific-line-from-text-file-using-just-shell-script (http://stackoverflow.com/questions/19327556/get-specific-line-from-text-file-using-just-shell-script)
پاسخ قبلی درست است! :-))
فقط بعد از n- باید اسم فایل رو بنویسه!
-
پاسخ قبلی اشتباه است!
sed:
sed '75!d' file
awk:
awk 'NR==75' file
ستون با cut یا awk
awk 'FNR==75{ print $3}' file
ستون ۳ خط ۷۵
و جالب تر اینکه مشکل شما رو حل کرده.
http://stackoverflow.com/questions/19327556/get-specific-line-from-text-file-using-just-shell-script (http://stackoverflow.com/questions/19327556/get-specific-line-from-text-file-using-just-shell-script)
پاسخ قبلی درست است! :-))
فقط بعد از n- باید اسم فایل رو بنویسه!
بهنظر من جواب دانیال اشتباه هست، کافیه تست کنی...
-
پاسخ قبلی اشتباه است!
sed:
sed '75!d' file
awk:
awk 'NR==75' file
ستون با cut یا awk
awk 'FNR==75{ print $3}' file
ستون ۳ خط ۷۵
و جالب تر اینکه مشکل شما رو حل کرده.
http://stackoverflow.com/questions/19327556/get-specific-line-from-text-file-using-just-shell-script (http://stackoverflow.com/questions/19327556/get-specific-line-from-text-file-using-just-shell-script)
پاسخ قبلی درست است! :-))
فقط بعد از n- باید اسم فایل رو بنویسه!
اون دستور ۷۵ را در فایل جستجو می کند.
پست ۱۰۰۰ ام! از اون فلاکس های قهوه نمیدید :).
-
سوئیچ n- توی دستور cat شماره خط رو در نظر میگیره و خط رو قابل جستجو میکنه ! دستور دانیال درسته اما اسم فایل رو ننوشته ! باید اینجور مینوشت :
cat -n file_name | grep 75
-
بعدش اگر ۷۵ هم در متن باشد می شود یک باگ پر دردسر!
-
اصلا دردسر نمیشه!
سوییچ n- شماره خط رو نگاه میکنه. کاری به محتویات نداره.
در ضمن من الکی نمیگم درسته.
تست شده از قبل...
-
این متن رو تست کن:
75
5g
56
45
75
67
75
-
با tail و head هم میشه. به این صورت که tail از آخر حساب میکنه و head از اول.
head -n75 file
-
awk "NR==75" file
-
بعدش اگر ۷۵ هم در متن باشد می شود یک باگ پر دردسر!
توی عبارات با قاعده، ^ به ابتدای خط اشاره میکنه. پس:
cat -n <FILE> | grep ^75
ویرایش: چون خروجی cat اولش فاصله داره به این شکل تغییر میکنه:
cat -n <FILE> | grep '^\s*75'
برای راحتی بیشتر، یه تابع برای این کار توی bash.rc درست میکنم:
print_line() {
cat -n $2 | grep "^\s*$1"
}
-
تایید میشه. :-)
مشکل خیلی از بچه ها اینه که فرمان رو کپی پیست میکنن.
کد بالا بیس اصلی رو نشون میده.
کافیه با کمی تحقیق فرمان ها رو تایپ کنیم و در صورت داشتن اشکل کمی گسترشش بدیم.
-
بعدش اگر ۷۵ هم در متن باشد می شود یک باگ پر دردسر!
توی عبارات با قاعده، ^ به ابتدای خط اشاره میکنه. پس:
cat -n <FILE> | grep ^75
ویرایش: چون خروجی cat اولش فاصله داره به این شکل تغییر میکنه:
cat -n <FILE> | grep '^\s*75'
برای راحتی بیشتر، یه تابع برای این کار توی bash.rc درست میکنم:
print_line() {
cat -n $2 | grep "^\s*$1"
}
بعدش هم باید ستون اول را پاک کنید!
-
بعدش اگر ۷۵ هم در متن باشد می شود یک باگ پر دردسر!
توی عبارات با قاعده، ^ به ابتدای خط اشاره میکنه. پس:
cat -n <FILE> | grep ^75
ویرایش: چون خروجی cat اولش فاصله داره به این شکل تغییر میکنه:
cat -n <FILE> | grep '^\s*75'
برای راحتی بیشتر، یه تابع برای این کار توی bash.rc درست میکنم:
print_line() {
cat -n $2 | grep "^\s*$1"
}
بعدش هم باید ستون اول را پاک کنید!
اصلا یه کاری میکنیم که دیگه شمارهی خط رو هم نشون نده:
print_line() { cat -n "$2" | grep "^\s*$1" | sed -r -e 's/^\s+[0-9]+\s*//'; }
فکر کنم اگر یکی دو پست دیگه پیش بره یه مخزن روی گیتهاب هم براش درست بشه :)))
-
با تشکر از همه دوستان
خوبی لینوکس اینه برای انجام یه کار چندین راه حل داری 8)