একক কমান্ডে 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, পেস্ট শর্টকাটের জন্য। এটি সহজেই বোধগম্য। :)
অঙ্কিত

আপনি কেবলমাত্র ট্যাবগুলির পরিবর্তে তালিকা থেকে অক্ষরগুলি পুনরায় ব্যবহার করার -d ''পরিবর্তে ব্যবহার করতে পারেন--delimiters=''
রুবু 7777


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) এবং পরিশেষে অতিরিক্ত ফাইলগুলি সরিয়ে ফেলুন।

লুভা দ্রবণটি আমার স্বাদের জন্য আরও পরিষ্কার।


-1

আপনি রেভ চেষ্টা করেছেন?

~$ cat filename | rev


3
নমুনা আউটপুট একবার দেখুন। এটি খাঁটি বিপরীত নয়, বরং ভাল চিন্তাভাবনা। আপনি যদি এটি পুনরায় কাজ করার কোনও উপায় নিয়ে না আসতে পারেন তবে সম্ভবত এটি মুছে ফেলা উচিত, যাতে এটি নীচে না যায় এবং থ্রেডকে বিভ্রান্ত না করে।
slm
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.