আমি কীভাবে কোনও ফাইলের লাইনের ক্রমটিকে বিপরীত করতে পারি?


641

আমি প্রতিটি লাইনের বিষয়বস্তু সংরক্ষণ করে একটি পাঠ্য ফাইলে (বা স্টিডিন) লাইনের ক্রমটি বিপরীত করতে চাই।

সুতরাং, অর্থাত:

foo
bar
baz

আমি শেষ করতে চাই

baz
bar
foo

এর জন্য কি কোনও মানক UNIX কমান্ডলাইন ইউটিলিটি রয়েছে?


2
লাইনগুলি বিপরীত করার বিষয়ে গুরুত্বপূর্ণ নোট: নিশ্চিত করুন যে আপনার ফাইলে প্রথমে ট্রেলিং নিউলাইন রয়েছে । অন্যথায়, একটি ইনপুট ফাইলের শেষ দুটি লাইন একটি আউটপুট ফাইলের এক লাইনে একত্রীকরণ করা হবে (কমপক্ষে এটি ব্যবহার করে perl -e 'print reverse <>'তবে এটি সম্ভবত অন্যান্য পদ্ধতির ক্ষেত্রেও প্রযোজ্য)।
jakub.g


বেশ প্রায় সদৃশ এর (যদিও পুরোনো) unix.stackexchange.com/questions/9356/... । সেক্ষেত্রে ইউনিক্স.স্ট্যাকেক্সেঞ্জ ডটকম-এ স্থানান্তর সম্ভবত যথাযথ।
এমসি 0 ই

উত্তর:


444

বিএসডি লেজ:

tail -r myfile.txt

তথ্যসূত্র: ফ্রিবিএসডি , নেটবিএসডি , ওপেনবিএসডি এবং ওএস এক্স ম্যানুয়াল পৃষ্ঠাগুলি।


120
কেবল মনে রাখবেন যে '-r' বিকল্পটি পজিক্স-অনুগত নয়। নীচের সেড এবং বিশ্রী সমাধানগুলি উইনকেষ্ট সিস্টেমেও কাজ করতে চলেছে।
বন্দুক 7

31
এটি কেবল উবুন্টু 12.04 এ চেষ্টা করে দেখেছি এবং আমার লেজের সংস্করণ (8.13) এর জন্য কোনও বিকল্প নেই r পরিবর্তে 'ট্যাক' ব্যবহার করুন (নীচে মিহাইয়ের উত্তর দেখুন)।
অদ্ভুততা

12
চেকমার্কটি ট্যাকের নীচে চলে যাওয়া উচিত। লেঙ্গুড় -r, সুসে 11. উবুন্টু 12/13, ফেডোরা 20 ব্যর্থ হলে
rickfoosusa

2
লেজ -r 1/1 ~ লেজ: অবৈধ বিকল্প - r আরও তথ্যের জন্য 'লেজ - সহায়তা' চেষ্টা করুন। এর নতুন বিকল্পটির মতো দেখতে
বোহদান 5'14

5
উত্তরে অবশ্যই উল্লেখ করা উচিত যে এটি বিএসডি-কেবল, বিশেষত যেহেতু ওপি একটি "স্ট্যান্ডার্ড ইউনিক্স" ইউটিলিটি চেয়েছিল। এটি জিএনইউ লেজে নেই তাই এটি এমনকি কোনও ডি-স্ট্যাক্ট মান নয়।
ড্যানসি

1398

এছাড়াও উল্লেখযোগ্য: tac(দ্য, আহেম, বিপরীত cat)। কোর্টিলের অংশ ।

একটি ফাইল অন্য ফ্লিপিং

tac a.txt > b.txt

72
বিশেষত নো-আর বিকল্পের সাথে লেজের সংস্করণ ব্যবহার করার জন্য তাদের উল্লেখযোগ্য! (বেশিরভাগ লিনাক্স ভাওয়াদের জিএনইউ লেজ থাকে, যার কোনও নো-আর নেই, তাই আমাদের কাছে জিএনইউ ট্যাক রয়েছে)।
oylenshpeegul

11
কেবল একটি নোট, কারণ লোকেরা আগে ট্যাকের কথা উল্লেখ করেছে, তবে ট্যাক ওএস এক্স-তে ইনস্টল করা হবে না বলে মনে হয় না। পার্লের বিকল্পটি লিখতে অসুবিধা হবে না, তবে আমার আসলটি নেই।
ক্রিস লুটজ

5
আপনি ফিঙ্ক থেকে ওএস এক্সের জন্য জিএনইউ ট্যাক পেতে পারেন। আপনি জিএনইউ লেজও পেতে ইচ্ছুক হতে পারেন, কারণ এটি এমন কিছু কাজ করে যা BSD লেজ দেয় না।
oylenshpeegul

25
যদি আপনি হোমব্রিউ সহ ওএস এক্স ব্যবহার করেন তবে আপনি ট্যাক brew install coreutils( gtacডিফল্ট হিসাবে ইনস্টল ) ব্যবহার করে ইনস্টল করতে পারেন ।
রবার্ট

3
সমস্যাগুলির মধ্যে একটি হ'ল যদি ফাইলটিতে নতুন নতুন লাইন না থাকে তবে প্রথম 2 লাইন 1 লাইন হিসাবে সংযুক্ত হতে পারে। echo -n "abc\ndee" > test; tac test
সিএমসিডিগ্রাগনকাই

161

এখানে সুপরিচিত সেড ট্রিকস রয়েছে :

# reverse order of lines (emulates "tac")
# bug/feature in HHsed v1.5 causes blank lines to be deleted
sed '1!G;h;$!d'               # method 1
sed -n '1!G;h;$p'             # method 2

(ব্যাখ্যা: বাফার ধরে রাখতে, অদলবদল করে এবং বাফার ধরে রাখতে, শেষে লাইনটি প্রিন্ট করতে প্রারম্ভিক)

বিকল্পভাবে (দ্রুত প্রয়োগের সাথে) ডাব্লু ওয়ান-লাইনারগুলি থেকে :

awk '{a[i++]=$0} END {for (j=i-1; j>=0;) print a[j--] }' file*

যদি আপনি এটি মনে করতে না পারেন,

perl -e 'print reverse <>'

জিএনইউ ইউটিলিটি সহ একটি সিস্টেমে অন্যান্য উত্তরগুলি সহজ, তবে সমস্ত বিশ্ব জিএনইউ / লিনাক্স নয় ...


4
একই উত্স থেকে: awk '{a [i ++] = $ 0} END {for (j = i-1; j> = 0;) একটি [j--] file' ফাইল মুদ্রণ করুন * সেড এবং অ্যাজক উভয় সংস্করণই কাজ করে আমার ব্যস্তবক্স রাউটার 'ট্যাক' এবং 'টেইল-আর' করে না।
বন্দুক

8
আমি আশা করি এটি একটি গৃহীত উত্তর। কোজ সেড সবসময় পাওয়া যায়, তবে তা না হয় tail -r
ryenus

@ রেনিয়াস: tacমনে করা যায় যে স্বেচ্ছাসেবী বড় ফাইলগুলি মেমরির সাথে খাপ খায় না (লাইনের দৈর্ঘ্য এখনও সীমাবদ্ধ)। এই sedজাতীয় ফাইলগুলির জন্য সমাধান কাজ করে কিনা তা স্পষ্ট নয় ।
jfs

যদিও কেবল সমস্যা: অপেক্ষা করতে প্রস্তুত থাকুন :-)
এন্টোইন লিজি

1
আরও স্পষ্টভাবে: সেড কোডটি ও (এন ^ 2) এ রয়েছে এবং বড় ফাইলগুলির জন্য খুব ধীর হতে পারে। অতএব অ্যাডক বিকল্পের জন্য আমার আপভোট, লিনিয়ার। আমি পার্ল বিকল্পটি চেষ্টা করিনি, কম পাইপ-বান্ধব।
এন্টোইন লিজি

70

আপনার আদেশের শেষে লিখুন: | tac

ট্যাক ঠিক আপনি যা যা চেয়েছিলেন তা করে, এটি "প্রতিটি ফাইলকে প্রথমে শেষ লাইনে স্ট্যান্ডার্ড আউটপুটে লিখুন।"

ট্যাক বিড়ালের বিপরীতে :-)।


সে কেন করবে? দয়া করে tacকমান্ডটির মান ব্যাখ্যা করুন, এটি নতুন ব্যবহারকারীদের জন্য দরকারী যারা একই বিষয় অনুসন্ধান করতে পারে।
নিক 3500

11
এটি সত্যই গ্রহণযোগ্য উত্তর হওয়া উচিত। উপরের লজ্জাজনক এত ভোট আছে।
joelittlejohn

62

আপনি যদি vimব্যবহারে হয়ে থাকেন

:g/^/m0


4
আপনি যদি এটি সংক্ষেপে ব্যাখ্যা করেন তবে আমি এটি দিয়েছি।
এমসি 01 ই

2
হ্যাঁ, আমি এই বিটটি পেয়েছি, তবে আমার অর্থ ভিএম কমান্ডের বিভিন্ন বিট কী করছে তা ভেঙে ফেলা। আমি এখন উত্তরটির দিকে যুক্ত লিঙ্কটি দেখেছি, যা ব্যাখ্যা সরবরাহ করে।
এমসি 0 ই

5
g এর অর্থ "এটি বিশ্বব্যাপী করুন ^ এর অর্থ" একটি লাইনের শুরু "m মানে" লাইনটি নতুন লাইনের সংখ্যায় সরান। " 0 কোন লাইনে যেতে হবে। 0 এর অর্থ "বর্তমান লাইনের 1 এর আগে ফাইলের শীর্ষস্থানীয়"। সুতরাং: "প্রতিটি সূত্র আছে এমন প্রতিটি লাইন সন্ধান করুন এবং এটি লাইন নম্বরে সরিয়ে দিন" " আপনি 1 লাইনটি সন্ধান করুন এবং এটিকে শীর্ষে স্থানান্তরিত করুন। কিছুই করে না। তারপরে লাইন 2 সন্ধান করুন এবং এটিকে 1 লাইনের উপরে, ফাইলের শীর্ষে সরিয়ে দিন। এখন 3 লাইনটি সন্ধান করুন এবং এটিকে শীর্ষে সরিয়ে দিন। প্রতিটি লাইনের জন্য এটি পুনরাবৃত্তি করুন। শেষে আপনি শেষ লাইনটি শীর্ষে সরিয়ে শেষ করবেন। আপনি যখন সম্পন্ন করেন, আপনি সমস্ত লাইন বিপরীত করেছেন।
রোনপোলিস

এটি লক্ষ করা উচিত যে: g গ্লোবাল কমান্ড কেবল রেঞ্জগুলি ব্যবহার করে বনাম খুব নির্দিষ্টভাবে আচরণ করে। উদাহরণস্বরূপ, কমান্ড ":% m0" রেখার ক্রমটিকে বিপরীত করবে না, যখন ":% সাধারন ddggP" করবে (যেমনটি ": g / ^ / সাধারন ddggP" করবে)। চমৎকার কৌশল এবং ব্যাখ্যা ... ওহ হ্যাঁ, "টোকেনটি ভুলে গেছেন: সহায়তা: জি আরও তথ্যের জন্য" ...
নাথান চ্যাপেল

51
tac <file_name>

উদাহরণ:

$ cat file1.txt
1
2
3
4
5

$ tac file1.txt
5
4
3
2
1

42
$ (tac 2> /dev/null || tail -r)

চেষ্টা করুন tac, যা লিনাক্সে কাজ করে এবং যদি এটি ব্যবহার না করে tail -r, যা BSD এবং OSX এ কাজ করে।


4
কেন নয় tac myfile.txt- আমি কী মিস করছি?
ষি

8
@ সেজে, ফিরে যেতে tail -rযদি tacপাওয়া যায় না। tacপসিক্স অনুগত নয়। না হয় tail -r। তবুও নির্বোধ নয়, তবে এটি কাজ করার প্রতিক্রিয়ার উন্নতি করে।
স্লোপোইজন

আমি দেখতে পেয়েছি - উদাহরণস্বরূপ যখন আপনি ব্যর্থ হয়ে কমান্ডটি ম্যানুয়ালি / ইন্টারেক্টিভভাবে পরিবর্তন করতে সক্ষম হন না it আমার জন্য যথেষ্ট ভাল।
ষি

3
ট্যাক উপলব্ধ কিনা তা দেখতে আপনার একটি সঠিক পরীক্ষা দরকার। যদি tacউপলভ্য হয় তবে কী হয় , তবে র্যামের বাইরে চলে যায় এবং একটি বিশাল ইনপুট স্ট্রিম গ্রহণের অর্ধেক পথ অদলবদল করে। এটি ব্যর্থ হয় এবং এরপরে tail -rস্ট্রিমের বাকী অংশগুলিকে একটি ভুল ফলাফল দিয়ে সাফল্য অর্জন করে।
এমসি 01 ই

@ পেটারপেলার ওএসএক্স হোমব্রু ব্যবহারের জন্য রবার্টের উপরের মন্তব্যের উত্তর দেখুন। brew install coreutils এবং gtacএর জায়গায় ব্যবহার করুন tacএবং যদি আপনার পছন্দসই একটি উপাধি হিসাবে টাক যুক্ত হয় gtacতবে উদাহরণস্বরূপ আপনি শেল স্ক্রিপ্ট চেয়েছিলেন যা এটি প্ল্যাটফর্ম (লিনাক্স, ওএসএক্স) ব্যবহার করেছে
ল্যাকোস্টেনাইকোডার

24

নিম্নলিখিত কমান্ড চেষ্টা করুন:

grep -n "" myfile.txt | sort -r -n | gawk -F : "{ print $2 }"

sed 's/^[0-9]*://g'
গাওক

2
গ্রেপ-এন এর পরিবর্তে "এনএল" ব্যবহার করবেন না কেন?
শুভ ব্যক্তি

3
@ গুডপারসন, nlডিফল্টরূপে খালি লাইন সংখ্যা ব্যর্থ করবে। -baবিকল্প কিছু সিস্টেমে উপলব্ধ না সার্বজনীন নয় (যদিও আমার খুব একটা ইচ্ছা হবে না এইচপি / ইউএক্স, মনে আসে) আর grep -nহবে সবসময় সংখ্যা যে লাইন যে (এই ক্ষেত্রে খালি) Regex সাথে মেলে।
ঘোটি

1
গাকের পরিবর্তে আমি ব্যবহার করিcut -d: -f2-
আলেকজান্ডার স্টাম্পফ

17

জাস্ট বাশ :) (4.0+)

function print_reversed {
    local lines i
    readarray -t lines

    for (( i = ${#lines[@]}; i--; )); do
        printf '%s\n' "${lines[i]}"
    done
}

print_reversed < file

2
ব্যাশ এবং হে (ঢ) এবং পুনরাবৃত্তির (+3 যদি আমি পারে) ব্যবহার না করার জন্য উত্তর জন্য +1
nhed

2
লাইনযুক্ত ফাইল সহ এটি -neneneneneneneব্যবহার করে দেখুন এবং লোকেরা সর্বদা এর printf '%s\n'পরিবর্তে কেন ব্যবহারের পরামর্শ দেয় তার কারণ প্রত্যক্ষ করুন echo
mtraceur

@ মিট্রেসুর আমি এটির সাথে একমত হব যেহেতু এটির একটি সাধারণ কাজ।
কনসোলবক্স

11

সবচেয়ে সহজ পদ্ধতিটি tacকমান্ডটি ব্যবহার করা হচ্ছে । tacহয় catএর বিপরীত। উদাহরণ:

$ cat order.txt
roger shah 
armin van buuren
fpga vhdl arduino c++ java gridgain
$ tac order.txt > inverted_file.txt
$ cat inverted_file.txt
fpga vhdl arduino c++ java gridgain
armin van buuren
roger shah 

1
এই উত্তরটি নীচের উত্তরটির আগে কেন প্রদর্শিত হবে তা নিশ্চিত নন তবে এটি স্ট্যাকওভারফ্লো. com / a/742485/ 1174784 - যা কয়েক বছর আগে পোস্ট করা হয়েছিল a
অ্যারাক্যাট

10

আমি সত্যিই " টেল-আর " উত্তরটি পছন্দ করি তবে আমার প্রিয় গোক উত্তরটি ....

gawk '{ L[n++] = $0 } 
  END { while(n--) 
        print L[n] }' file

mawkউবুন্টু 14.04 এলটিএস-এর সাথে পরীক্ষিত - কাজ করে, তাই এটি জিএনইউ অ্যাডক নির্দিষ্ট নয়। +1
সের্গেই কলডিয়্যাজনি


3

নিম্নলিখিতটি সম্পাদনা করুন 1 থেকে 10 পর্যন্ত এলোমেলোভাবে সাজানো সংখ্যার তালিকা তৈরি করে:

seq 1 10 | sort -R | tee /tmp/lst |cat <(cat /tmp/lst) <(echo '-------') **...**

যেখানে বিন্দুগুলি প্রকৃত কমান্ডের সাথে প্রতিস্থাপন করা হয় যা তালিকার বিপরীতে

Tac

seq 1 10 | sort -R | tee /tmp/lst |cat <(cat /tmp/lst) <(echo '-------') \
<(tac)

অজগর: sys.stdin এ [:: - 1] ব্যবহার করে

seq 1 10 | sort -R | tee /tmp/lst |cat <(cat /tmp/lst) <(echo '-------') \
<(python -c "import sys; print(''.join(([line for line in sys.stdin])[::-1]))")

3

ক্রস ওএস (অর্থাত্ ওএসএক্স, লিনাক্স) সমাধানের জন্য যা ব্যবহার করতে পারে tac শেল স্ক্রিপ্টের অভ্যন্তরে অন্যরা উপরে উল্লিখিতভাবে হোমব্রিউ ব্যবহার করে, তবে কেবল ওরফে ট্যাকটি এর মতো:

ইনস্টল করুন

ম্যাকোসের জন্য

brew install coreutils

লিনাক্স ডিবিয়ানদের জন্য

sudo apt-get update
sudo apt-get install coreutils 

তারপরে উপনাম যুক্ত করুন

echo "alias tac='gtac'" >> ~/.bash_aliases (or wherever you load aliases)
source ~/.bash_aliases
tac myfile.txt

2

এটি বিএসডি এবং জিএনইউ উভয় ক্ষেত্রেই কাজ করবে।

awk '{arr[i++]=$0} END {while (i>0) print arr[--i] }' filename

1

আপনি যদি জায়গাটিতে ফাইলটি পরিবর্তন করতে চান তবে আপনি চালাতে পারেন can

sed -i '1!G;h;$!d' filename

এটি একটি অস্থায়ী ফাইল তৈরি করার প্রয়োজনটিকে সরিয়ে দেয় এবং তারপরে মূলটি মুছুন বা পুনরায় নামকরণ করুন এবং একই ফলস্বরূপ। উদাহরণ স্বরূপ:

$tac file > file2
$sed -i '1!G;h;$!d' file
$diff file file2
$

উপর ভিত্তি করে ephemient দ্বারা উত্তর , যা করেনি প্রায়, কিন্তু বেশ, আমি কি চেয়েছিলাম।


1

আমার সাথে এটি ঘটে যে আমি nখুব বড় টেক্সট ফাইলের শেষ লাইনগুলি দক্ষতার সাথে পেতে চাই ।

প্রথম জিনিসটি আমি চেষ্টা করেছিলাম tail -n 10000000 file.txt > ans.txtতবে এটি আমি খুব ধীর পেয়েছিtail এর জন্য লোকেশনটি অনুসন্ধান করতে হবে এবং তারপরে ফলাফলগুলি মুদ্রণের জন্য ফিরে যেতে হবে।

যখন আমি এটা বুঝতে, আমি অন্য সমাধান স্যুইচ: tac file.txt | head -n 10000000 > ans.txt। এবার, সন্ধানের অবস্থানটি কেবল শেষ থেকে পছন্দসই স্থানে যেতে হবে এবং এটি 50% সময় সাশ্রয় করে !

হোম বার্তা নিয়ে:

tac file.txt | head -n nআপনার বিকল্প tailনা থাকলে ব্যবহার করুন -r


0

সবচেয়ে ভালো সমাধান:

tail -n20 file.txt | tac

স্ট্যাক ওভারফ্লোতে স্বাগতম! যদিও এই কোড স্নিপেট একটি ব্যাখ্যা সহ প্রশ্নটি সমাধান করতে পারে, সত্যিই আপনার পোস্টের মান উন্নত করতে সহায়তা করে। মনে রাখবেন যে আপনি ভবিষ্যতে পাঠকদের জন্য প্রশ্নের উত্তর দিচ্ছেন, এবং সেই লোকেরা আপনার কোড পরামর্শের কারণগুলি জানেন না। আপনার কোডটি ব্যাখ্যামূলক মন্তব্যে ভিড় না করার চেষ্টা করুন, এটি কোড এবং ব্যাখ্যা উভয়ের পাঠযোগ্যতা হ্রাস করে!
কেয়েস

0

ইমাক্স ব্যবহারকারীদের জন্য: C-x h(পুরো ফাইলটি নির্বাচন করুন) এবং তারপরে M-x reverse-region। এছাড়াও কেবলমাত্র অংশ বা রেখাগুলি বাছাই এবং সেগুলি আবার ফিরিয়ে আনতে কাজ করে।


0

আমি আকর্ষণীয় ধারণা প্রচুর দেখতে। তবে আমার ধারণা চেষ্টা করুন। এতে আপনার পাঠ্য পাইপ করুন:

রেভ | tr '। n' '~' | রেভ | ত্র '~' '\ n'

যা ধরে নিয়েছে যে '~' অক্ষরটি ফাইলে নেই। এটি প্রতিটি ইউনিক্স শেল 1961-এ ফিরে যাওয়া নিয়ে কাজ করা উচিত Or বা এর মতো কিছু।


-1

আমার একই প্রশ্ন ছিল, তবে আমি প্রথম লাইনে (শিরোলেখ) শীর্ষে থাকতে চেয়েছিলাম। সুতরাং আমার কাছে অ্যাডকের শক্তি ব্যবহার করা দরকার

cat dax-weekly.csv | awk '1 { last = NR; line[last] = $0; } END { print line[1]; for (i = last; i > 1; i--) { print line[i]; } }'

পিএস সাইগউইন বা গিটব্যাশ-এও কাজ করে


1\n20\n19...2\nপরিবর্তে ফলাফল প্রদর্শিত হবে 20\n19...\2\n1\n
মার্ক বুথ

-1

আপনার সাথে এটা করতে পারেন vim stdinএবং stdout। আপনি পসিক্স অনুগত হতেও ব্যবহার exকরতে পারেন । এর জন্য কেবল ভিজ্যুয়াল মোড । আসলে, আপনি বা (উন্নত মোড) এর সাথে ব্যবহার করতে পারেন । এটি কার্যকর কারণ কারণ এর মতো সরঞ্জামগুলি ফাইল সম্পাদনার জন্য বাফার করে, যখন প্রবাহের জন্য ব্যবহৃত হয়। আপনি ব্যবহার করতে সক্ষম হতে পারেন , তবে আপনাকে একটি চলকটিতে ম্যানুয়ালি বাফার করতে হবে।vimexexvim -evim -Eexvimsedsedawk

নিম্নলিখিতটি করার জন্য ধারণাটি হ'ল:

  1. স্টিডিন থেকে পড়ুন
  2. প্রতিটি লাইনের জন্য এটি লাইন 1 এ সরান (বিপরীতে)। কমান্ড হয় g/^/m0। এর অর্থ প্রতিটি স্তরের জন্য বিশ্বব্যাপী g; লাইনের সূচনাটি মিলবে, যা কোনও কিছুর সাথে মেলে ^; এটিকে ঠিকানা 0 এর পরে সরান, যা লাইন 1 m0
  3. সবকিছু মুদ্রণ করুন। কমান্ড হয় %p। এর অর্থ সমস্ত লাইনের পরিসীমা %; লাইন মুদ্রণ করুন p
  4. ফাইলটি সংরক্ষণ না করে জোর করে ছেড়ে দিন। কমান্ড হয় q!। এর অর্থ ছাড় q; জোর করে !
# Generate a newline delimited sequence of 1 to 10
$ seq 10
1
2
3
4
5
6
7
8
9
10

# Use - to read from stdin.
# vim has a delay and annoying 'Vim: Reading from stdin...' output
# if you use - to read from stdin. Use --not-a-term to hide output.
# --not-a-term requires vim 8.0.1308 (Nov 2017)
# Use -E for improved ex mode. -e would work here too since I'm not
# using any improved ex mode features.
# each of the commands I explained above are specified with a + sign
# and are run sequentially.
$ seq 10 | vim - --not-a-term -Es +'g/^/m0' +'%p' +'q!'
10
9
8
7
6
5
4
3
2
1
# non improved ex mode works here too, -e.
$ seq 10 | vim - --not-a-term -es +'g/^/m0' +'%p' +'q!'

# If you don't have --not-a-term, use /dev/stdin
seq 10 | vim -E +'g/^/m0' +'%p' +'q!' /dev/stdin

# POSIX compliant (maybe)
# POSIX compliant ex doesn't allow using + sign to specify commands.
# It also might not allow running multiple commands sequentially.
# The docs say "Implementations may support more than a single -c"
# If yours does support multiple -c
$ seq 10 | ex -c "execute -c 'g/^/m0' -c '%p' -c 'q!' /dev/stdin

# If not, you can chain them with the bar, |. This is same as shell
# piping. It's more like shell semi-colon, ;.
# The g command consumes the |, so you can use execute to prevent that.
# Not sure if execute and | is POSIX compliant.
seq 10 | ex -c "execute 'g/^/m0' | %p | q!" /dev/stdin

কীভাবে এটি পুনরায় ব্যবহারযোগ্য করে তোলা যায়

আমি সম্পাদনা করতে ভিএম ব্যবহার করতে আমি কল করি একটি স্ক্রিপ্ট ved(ভিএম সম্পাদক পছন্দ করি sed) ব্যবহার করি stdinvedআপনার পথে ডাকা একটি ফাইলে এটি যুক্ত করুন:

#!/usr/bin/env sh

vim - --not-a-term -Es "$@" +'%p | q!'

আমি এর +পরিবর্তে একটি কমান্ড ব্যবহার করছি +'%p' +'q!', কারণ ভিএম আপনাকে 10 কমান্ডের মধ্যে সীমাবদ্ধ করে। সুতরাং তাদের মার্জ করে "$@"9 করার অনুমতি দেয়+ টির পরিবর্তে কমান্ড পাওয়া যায়।

তারপরে আপনি এটি করতে পারেন:

seq 10 | ved +'g/^/m0'

আপনার যদি ভিম 8 না থাকে তবে এটির vedপরিবর্তে এটি রাখুন:

#!/usr/bin/env sh

vim -E "$@" +'%p | q!' /dev/stdin

-3
rev
text here

অথবা

rev <file>

অথবা

rev texthere

হাই, স্ট্যাক ওভারফ্লোতে আপনাকে স্বাগতম! আপনি যখন কোনও প্রশ্নের উত্তর দেন তখন আপনার কোনও ধরণের ব্যাখ্যা অন্তর্ভুক্ত করা উচিত, যেমন লেখক কী ভুল করেছেন এবং এটি সমাধান করার জন্য আপনি কী করেছিলেন। আমি এটি আপনাকে বলছি কারণ আপনার উত্তরটি নিম্নমানের হিসাবে চিহ্নিত হয়েছে এবং বর্তমানে এটি পর্যালোচনা করা হচ্ছে। আপনি "সম্পাদনা" বোতামটি ক্লিক করে আপনার উত্তর সম্পাদনা করতে পারেন।
ফেডেরিকো গ্র্যান্ডি

ESP। পুরানো, ভাল উত্তরযুক্ত প্রশ্নের নতুন উত্তরগুলির আরও একটি উত্তর যুক্ত করার জন্য যথেষ্ট ন্যায়সঙ্গততা প্রয়োজন।
গার্ট আর্নল্ড

রেভ পাঠ্যকে অনুভূমিকভাবে উল্টিয়ে দেবে যা পছন্দসই আচরণ নয়।
D3l_Gato

-4

টেল-আর বেশিরভাগ লিনাক্স এবং ম্যাকোস সিস্টেমে কাজ করে

seq 1 20 | লেজ -আর


-9
sort -r < filename

অথবা

rev < filename

7
sort -rকেবলমাত্র যদি ইনপুটটি ইতিমধ্যে বাছাই করা হয় তবে এটি কাজ করে। revপ্রতি লাইনে অক্ষরকে বিপরীত করে তবে লাইন ক্রম অক্ষুণ্ন রাখে যা স্কটি যা চেয়েছিল তা নয়। সুতরাং এই উত্তর আসলে কোন উত্তর নেই।
আলেকজান্ডার স্টাম্প
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.