एक कमांड में 2 अलग-अलग कट आउटपुट का संयोजन?


15

मेरे पास निम्नलिखित के रूप में एक फाइल है:

1234
ABCD
EFGH

मैं इसे निम्नलिखित में बदलना चाहता हूं:

2341
BCDA
FGHE

वास्तविक फ़ाइल में 4,000 शब्द हैं, इसलिए मैं इसे एक कुशल तरीके से करना चाहूंगा। मैंने कमांड का उपयोग करने की कोशिश की cut -c 2-4,1 file.txt, लेकिन यह इनपुट के समान सटीक आउटपुट का उत्पादन करता है। मैं सोच रहा था कि मैं 3 अलग-अलग कमांड का उपयोग कर सकता हूं:

cut -c 1 file.txt > temp1.txt
cut -c 2-4 file.txt > temp2.txt
// combine the two with paste or pr

... लेकिन मैं एक कमांड को प्राथमिकता दूंगा क्योंकि मुझे इसे कई बार मामूली संशोधनों के साथ चलाने की आवश्यकता है ताकि एक कमांड चलने पर हर बार 3 कमांड चलाने की तुलना में कम त्रुटि हो।

क्या 2 कट स्टेटमेंट को एक में मिलाने का कोई तरीका है? कुछ इस तरह:

cut -c 1 file.txt | pr (cut -c 2-4 file.txt)

या ऐसा करने का एक बेहतर तरीका है?

जवाबों:


8

का उपयोग कर sed:

sed 's:^\(.\)\(.*\):\2\1:' file.txt

2341
BCDA
FGHE

11

के साथ cutऔर pasteआप भी एक लाइनर कर सकते हैं:

$ cat file
1234
ABCD
EFGH
$ paste --delimiter=''  <(cut file -c2-4) <(cut file -c1)
2341
BCDA
FGHE

पेस्ट शॉर्टकट के लिए +1। यह आसानी से समझ में आता है। :)
अंकित

आप भी केवल TAB के बजाय LIST से पात्रों का पुन: उपयोग -d ''करने के बजाय उपयोग कर सकते हैं--delimiters=''
rubo77


3
$ cat test
1234
ABCD
EFGH
$ awk -F "" '{print $2$3$4$1}' test
2341
BCDA
FGHE

आप अपने डेटा के अनुसार विभाजक को "-F" के माध्यम से बदल सकते हैं, और खेतों के क्रम को मनमाने ढंग से व्यवस्थित कर सकते हैं।


1

यहाँ एक तरीका है perl:

perl -F'' -lane 'print @F[1..@F], $F[0]'

अक्षर सीमाओं पर ऑटो-विभाजन, एक को बाईं ओर घुमाएं और प्रिंट करें।


0

मुझे स्क्रिप्ट तरीके से एक विकल्प मिला:

~$ cut -c2- file.txt>file2.txt
~$ cut -c1 file.txt>file3.txt
~$ paste -d "" file2.txt file3.txt>file4.txt
~$ rm file2.txt file3.txt

स्क्रिप्ट एक अलग फ़ाइलों में जंजीरों को काटती है। फिर एक नई फ़ाइल (file4.txt) में शामिल हों और अंत में अतिरिक्त फ़ाइलों को हटा दें।

मेरे स्वाद के लिए llua समाधान अधिक साफ है।


-1

क्या आपने उलटफेर की कोशिश की है?

~$ cat filename | rev


3
नमूना आउटपुट पर एक नज़र डालें। यह एक शुद्ध रिवर्स नहीं है, लेकिन अच्छी सोच है। यदि आप इसे फिर से काम करने का एक तरीका नहीं दे सकते हैं, तो आपको इसे हटा देना चाहिए, बस ताकि यह डाउनवॉट न हो और धागे को भ्रमित न करें।
स्लम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.