मैं किसी फ़ाइल में लाइनों के क्रम को कैसे बदल सकता हूं?


641

मैं एक टेक्स्ट फ़ाइल (या स्टडिन) में लाइनों के क्रम को उल्टा करना चाहूंगा, प्रत्येक पंक्ति की सामग्री को संरक्षित करना।

तो, यानी, के साथ शुरू:

foo
bar
baz

मैं समाप्त करना चाहूंगा

baz
bar
foo

क्या इसके लिए एक मानक यूनिक्स कमांडलाइन उपयोगिता है?


2
लाइनों को उलटने के बारे में महत्वपूर्ण नोट: सुनिश्चित करें कि आपकी फ़ाइल में पहले एक अनुगामी न्यूलाइन है । अन्यथा, इनपुट फ़ाइल की अंतिम दो पंक्तियों को आउटपुट फ़ाइल में एक पंक्ति में विलय कर दिया जाएगा (कम से कम इसका उपयोग करते हुए perl -e 'print reverse <>'लेकिन यह संभवतः अन्य तरीकों पर भी लागू होता है)।
जकूब.ग।


इसके अलावा unix.stackexchange.com/questions/9356/… के लगभग एक डुप्लिकेट (हालांकि पुराने) । जैसा कि उस स्थिति में, unix.stackexchange.com पर माइग्रेशन संभवतः उपयुक्त है।
mc0e

जवाबों:


444

बीएसडी पूंछ:

tail -r myfile.txt

संदर्भ: FreeBSD , NetBSD , OpenBSD और OS X मैनुअल पेज।


120
बस याद रखें कि '-r' विकल्प POSIX- अनुरूप नहीं है। नीचे दिए गए sed और awk समाधान भी winkiest सिस्टम में काम करने वाले हैं।
बंदूकें

31
बस उबंटू 12.04 पर यह कोशिश की, और पता चला कि मेरे पूंछ (8.13) संस्करण के लिए कोई -r विकल्प नहीं है। इसके बजाय 'tac' का उपयोग करें (नीचे मिहाई का उत्तर देखें)।
अपवित्रता

12
चेकमार्क टीएसी से नीचे जाना चाहिए। टेल -r उबंटू 12/13, फेडोरा 20,
स्यूस

2
पूंछ -r ~ / 1 ~ पूंछ: अमान्य विकल्प - r अधिक जानकारी के लिए `पूँछ --help 'आज़माएँ। इसके नए विकल्प
बोहदन

5
जवाब में निश्चित रूप से उल्लेख किया जाना चाहिए कि यह बीएसडी-ही है, खासकर जब से ओपी ने "मानक यूनिक्स" उपयोगिता के लिए पूछा था। यह GNU टेल में नहीं है, इसलिए यह एक वास्तविक मानक भी नहीं है।
DanC

1399

इसके अलावा उल्लेख के लायक: tac(ए, अहम, रिवर्स cat)। कोरुटिल का हिस्सा ।

एक फ़ाइल को दूसरी में फ़्लिप करना

tac a.txt > b.txt

72
विशेष रूप से उन लोगों के लिए उल्लेख के लायक है जो बिना आर विकल्प के साथ पूंछ के एक संस्करण का उपयोग कर रहे हैं! (अधिकांश लिनक्स लोगों के पास GNU टेल है, जिसमें कोई -r नहीं है, इसलिए हमारे पास GNU टैक है)।
oylenshpeegul

11
बस एक नोट, क्योंकि लोगों ने पहले टीएसी का उल्लेख किया है, लेकिन ओएस एक्स पर टीएसी स्थापित नहीं होता है। ऐसा नहीं है कि पर्ल में एक विकल्प लिखना मुश्किल होगा, लेकिन मेरे पास असली नहीं है।
क्रिस लुत्ज

5
आप Fink से OS X के लिए GNU टैक प्राप्त कर सकते हैं। आप GNU टेल प्राप्त करना चाह सकते हैं, क्योंकि यह कुछ चीजें करता है जो बीएसडी टेल नहीं करता है।
oylenshpeegul 22

25
यदि आप होमब्रे के साथ ओएस एक्स का उपयोग करते हैं, तो आप टीएसी का उपयोग करके इंस्टॉल कर सकते हैं brew install coreutils( gtacडिफ़ॉल्ट रूप से इंस्टॉल करता है)।
रॉबर्ट

3
समस्याओं में से एक यह है कि यदि फ़ाइल में कोई नई पंक्ति नहीं है, तो पहली 2 पंक्तियों को 1 पंक्ति के रूप में संयोजित किया जा सकता है। echo -n "abc\ndee" > test; tac test
CMCDragonkai

161

नहीं है अच्छी तरह से ज्ञात sed चाल :

# 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 {के लिए (j = i-1,> = =); a [j--]} फ़ाइल को प्रिंट करें। दोनों sed और awk वर्जन काम करते हैं मेरा बिजीबॉक्स राउटर। 'टैक' और 'टेल-आर' नहीं।
बंदूकें

8
काश यह एक स्वीकृत उत्तर हो। coz sed हमेशा उपलब्ध है, लेकिन tail -rटैक नहीं ।
रीनस

@ आर्यनस: tacसे अपेक्षा की जाती है कि वे बड़ी-बड़ी फ़ाइलों को संभाल लें जो मेमोरी में फिट नहीं होती हैं (लाइन की लंबाई हालांकि अभी भी सीमित है)। यह स्पष्ट नहीं है कि क्या sedसमाधान ऐसी फ़ाइलों के लिए काम करता है।
jfs

केवल समस्या हालांकि: इंतजार करने के लिए तैयार रहें :-)
एंटोनी लिज़ी

1
अधिक सटीक रूप से: sed कोड O (n ^ 2) में है, और बड़ी फ़ाइलों के लिए बहुत धीमा हो सकता है। इसलिए जाग विकल्प के लिए मेरा उत्थान, रैखिक। मैं पर्ल विकल्प की कोशिश नहीं की, कम पाइपिंग के अनुकूल।
एंटोनी लिज़ी

70

आपके आदेश के अंत में: | tac

tac वही करता है जो आप पूछ रहे हैं, यह "प्रत्येक FILE को मानक आउटपुट, अंतिम पंक्ति पहले लिखें।"

tac बिल्ली के विपरीत है :-)।


वह क्यों चाहिए? कृपया tacकमांड का मूल्य स्पष्ट करें , यह नए उपयोगकर्ताओं के लिए उपयोगी है जो एक ही विषय को खोज सकते हैं।
निक 3500

11
यह वास्तव में स्वीकृत उत्तर होना चाहिए। शर्म करो ऊपर वाले के पास इतने वोट हैं।
joelittlejohn

62

यदि आप vimउपयोग में होना है

:g/^/m0


4
अगर आपने संक्षेप में बताया कि यह क्या हुआ तो मैं आपको वोट दूंगा।
mc0e

2
हाँ, मुझे वह बिट मिलता है, लेकिन मेरा मतलब था कि विम कमांड के विभिन्न बिट्स क्या कर रहे हैं। मैंने अब @kenorb से जुड़े उत्तर को देखा है, जो स्पष्टीकरण प्रदान करता है।
mc0e

5
जी का अर्थ है "ऐसा विश्व स्तर पर करें। ^ का अर्थ है" एक लाइन की शुरुआत "। मी का अर्थ है" लाइन को एक नई लाइन नंबर पर ले जाना। 0 किस लाइन को आगे बढ़ाना है। 0 का अर्थ है "वर्तमान पंक्ति 1 से पहले फ़ाइल का शीर्ष"। इसलिए: "प्रत्येक पंक्ति को खोजें जिसमें एक शुरुआत है, और इसे पंक्ति संख्या 0. में स्थानांतरित करें" आप पंक्ति 1 पाते हैं, और इसे शीर्ष पर ले जाते हैं। कुछ नहीं करता। फिर लाइन 2 को ढूंढें और इसे पंक्ति 1 से ऊपर, फ़ाइल के शीर्ष पर ले जाएं। अब लाइन 3 ढूंढें और इसे शीर्ष पर ले जाएं। हर लाइन के लिए इसे दोहराएं। अंत में आप अंतिम पंक्ति को शीर्ष पर ले जाकर समाप्त करते हैं। जब आप कर लिए जाते हैं, तो आपने सभी पंक्तियों को उलट दिया है।
रॉनोपोलिस

यह ध्यान दिया जाना चाहिए कि: जी वैश्विक कमांड एक विशेष तरीके से व्यवहार करता है बनाम बस श्रेणियों का उपयोग करके। उदाहरण के लिए, कमांड ":% m0" लाइनों के क्रम को उल्टा नहीं करेगा, जबकि ":% सामान्य ddggP" (जैसा होगा ": g / ^ / सामान्य ddggP")। अच्छी चाल और स्पष्टीकरण ... ओह हाँ, टोकन भूल गए "देखें: मदद: जी अधिक जानकारी के लिए" ...
नाथन चैपल


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

कोशिश करें tac, जो लिनक्स पर काम करता है, और अगर वह काम नहीं करता है tail -r, जो बीएसडी और ओएसएक्स पर काम करता है।


4
क्यों नहीं tac myfile.txt- मैं क्या याद कर रहा हूँ?
ऋषि

8
@sage, tail -rमामले में वापस आने के लिए tacउपलब्ध नहीं है। tacPOSIX अनुरूप नहीं है। न ही है tail -r। फिर भी मूर्ख नहीं है, लेकिन यह काम करने की बाधाओं को सुधारता है।
धीमी गति

मैं देखता हूं - ऐसे उदाहरणों के लिए जब आप विफल होने पर मैन्युअल रूप से / अंतःक्रियात्मक रूप से कमांड को बदलने में सक्षम नहीं होते हैं। मेरे लिए काफी अच्छा।
ऋषि

3
टीएसी उपलब्ध है या नहीं यह देखने के लिए आपको एक उचित परीक्षण की आवश्यकता है। यदि tacउपलब्ध हो तो क्या होता है, लेकिन रैम से बाहर चला जाता है और एक विशाल इनपुट स्ट्रीम का उपभोग करके आधे रास्ते को स्वैप करता है। यह विफल हो जाता है, और फिर tail -rएक गलत परिणाम देने वाली शेष धारा को संसाधित करने में सफल होता है।
mc0e

@PetrPeller OSX उपयोग होमब्रेव के लिए रॉबर्ट द्वारा टिप्पणी के ऊपर उत्तर देखें। brew install coreutils और उपयोग gtacके स्थान पर tacऔर यदि आपके लिए एक उपनाम के रूप में जोड़ने के टैक पसंद करते हैं gtac, तो उदाहरण के लिए यदि आप एक खोल स्क्रिप्ट है कि यह पार मंच (लिनक्स, OSX) का इस्तेमाल किया चाहता था
lacostenycoder

24

निम्नलिखित कमांड आज़माएं:

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

sed 's/^[0-9]*://g'
गौक

2
grep -n के बजाय "nl" का उपयोग क्यों नहीं किया जाता है?
अच्छा व्यक्ति

3
@GoodPerson, nlडिफ़ॉल्ट रूप से खाली लाइनों की संख्या में विफल हो जाएगा। -baविकल्प, कुछ सिस्टम पर उपलब्ध है नहीं सार्वभौमिक नहीं है (हालांकि मैं चाहता हूँ ऐसा नहीं है एचपी / UX, मन में आता है) जबकि 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
+1 बैश में उत्तर के लिए और O (n) के लिए और पुनरावृत्ति का उपयोग नहीं करने के लिए (+3 अगर मैं कर सकता था)
ned

2
लाइन वाली फाइल के साथ यह कोशिश करें -neneneneneneneऔर इस कारण को देखें कि लोग हमेशा की printf '%s\n'बजाय इस्तेमाल करने की सलाह देते हैं echo
मत्तसुर

@ मैं बार-बार इस बात से सहमत होता हूं कि इस बार यह एक सामान्य कार्य है।
konsolebox

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
यह निश्चित नहीं है कि यह उत्तर नीचे दिए गए से पहले क्यों दिखाई देता है, लेकिन यह stackoverflow.com/a/742485/1174784 - जो वर्षों पहले पोस्ट किया गया था , का एक प्रकार है ।
अनारकट

10

मुझे वास्तव में " टेल-आर " उत्तर पसंद है, लेकिन मेरा पसंदीदा गॉक उत्तर है ...।

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

के साथ परीक्षण किया mawkUbuntu 14.04 LTS पर - काम करता है, तो यह जीएनयू awk विशिष्ट नहीं है। +1
सर्गी कोलोडियाज़नी

n++के साथ प्रतिस्थापित किया जा सकता हैNR
karakfa

3

निम्नलिखित को संपादित करें 1 से 10 तक की संख्याओं की एक क्रमबद्ध क्रमबद्ध सूची बनाता है:

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

जहां डॉट्स को वास्तविक कमांड से बदल दिया जाता है जो सूची को उलट देता है

टैक

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 शेल स्क्रिप्ट के अंदर हैं होमब्रे का उपयोग करें जैसा कि दूसरों ने ऊपर उल्लेख किया है, तो बस उर्फ ​​टैक जैसे:

लिब स्थापित करें

MacOS के लिए

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

यदि आप फ़ाइल को जगह में बदलना चाहते हैं, तो आप चला सकते हैं

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

यह एक अस्थायी फ़ाइल बनाने की आवश्यकता को हटा देता है और फिर मूल को हटा या नाम बदल देता है और उसी का परिणाम होता है। उदाहरण के लिए:

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

एपिमिएंट के उत्तर के आधार पर , जो लगभग नहीं, बल्कि काफी था, जो मैं चाहता था।


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

ढेर अतिप्रवाह में आपका स्वागत है! हालांकि यह कोड स्निपेट प्रश्न को हल कर सकता है, जिसमें स्पष्टीकरण सहित वास्तव में आपकी पोस्ट की गुणवत्ता में सुधार करने में मदद करता है। याद रखें कि आप भविष्य में पाठकों के लिए प्रश्न का उत्तर दे रहे हैं, और उन लोगों को आपके कोड सुझाव के कारणों का पता नहीं चल सकता है। कृपया अपने कोड को व्याख्यात्मक टिप्पणियों के साथ भीड़ देने की कोशिश न करें, इससे कोड और स्पष्टीकरण दोनों की पठनीयता कम हो जाती है!
kayess डेस

0

Emacs उपयोगकर्ताओं के लिए: C-x h(पूरी फ़ाइल का चयन करें) और फिर M-x reverse-region। इसके अलावा केवल भागों या लाइनों का चयन करने और उन लोगों को पुनः प्राप्त करने के लिए काम करता है।


0

मुझे बहुत सारे दिलचस्प विचार दिखाई देते हैं। लेकिन मेरे विचार को आज़माएं। इसमें अपना टेक्स्ट पाइप करें:

रेव | tr '\ n' '~' | रेव | tr '~' '\ n'

जो मानता है कि चरित्र '~' फ़ाइल में नहीं है। यह 1961 में वापस जाने वाले प्रत्येक UNIX शेल पर काम करना चाहिए। या ऐसा ही कुछ।


-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]; } }'

PS साइबरविन या जीटबैश में भी काम करता है


इसके 1\n20\n19...2\nबजाय परिणाम प्रतीत होता है 20\n19...\2\n1\n
मार्क बूथ

-1

आप इसके साथ vim stdinऔर कर सकते हैं stdout। तुम भी POSIX आज्ञाकारी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) संपादित करने के लिए विम का उपयोग करने के लिए stdin। इसे vedअपने पथ में नामक फ़ाइल में जोड़ें :

#!/usr/bin/env sh

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

मैं +इसके बजाय एक कमांड का उपयोग कर रहा हूं +'%p' +'q!', क्योंकि विम आपको 10 कमांड तक सीमित करता है। इसलिए उन्हें विलय "$@"करने से 9 की अनुमति मिलती है+ करने से 8 के बजाय कमांड रखने की ।

तो आप कर सकते हैं:

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। पुराने, अच्छी तरह से पूछे गए सवालों के नए जवाब के लिए एक और जवाब जोड़ने के लिए पर्याप्त औचित्य की आवश्यकता है।
गर्ट अर्नोल्ड

Rev पाठ को क्षैतिज रूप से फ्लिप करेगा और जो वांछित व्यवहार नहीं है।
डी ३ एल_गाटो

-4

पूँछ -r अधिकांश लिनक्स और मैकओएस सिस्टम में काम करता है

seq 1 20 | पूँछ -r


-9
sort -r < filename

या

rev < filename

7
sort -rकेवल तभी काम करता है जब इनपुट पहले से ही सॉर्ट किया गया हो, जो यहां नहीं है। revप्रति पंक्ति वर्णों को उलट देता है लेकिन रेखा के क्रम को अक्षुण्ण रखता है जो कि स्कूटी ने नहीं पूछा था। तो यह जवाब वास्तव में कोई जवाब नहीं है।
अलेक्जेंडर स्टंपफ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.