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


45

আমি কীভাবে কোনও পাঠ্য ফাইলের প্রতিটি লাইনের শুরুতে একটি লাইন নম্বর এবং ট্যাব যুক্ত করতে পারি?


আমি যা ভাবছি তা হ'ল আপনি উইন্ডোজে এটি কীভাবে করবেন ...
এটিডোক

4
এটি স্ট্যাকওভারফ্লোতে থাকা উচিত? সুপারভাইজারের জন্য উত্তরটি নোটপ্যাড এবং প্রচুর ধৈর্য।
কোকোস

2
সুতরাং, আপনি কি সংশোধন বা সংযোজন করতে চান? আপনার শিরোনাম এবং বডি পাঠ্য পৃথক;)
ম্যাটপি

আমার ধারণা আমি শুরুতে যুক্ত করতে চাই , "প্রিপেন্ড" হ্যাকারদের কাছে কেবল একটি শব্দ।
রিচার্ড হোসকিনস

উইন্ডোজে, অন্য কোনও প্রোগ্রামিং-ইশ প্রশ্নের মতো, আপনি সাইগউইন ইনস্টল করতে পারেন এবং তারপরে নীচের উত্তরগুলি ব্যবহার করতে পারেন।
জোনাথন হার্টলি

উত্তর:


49
awk '{printf "%d\t%s\n", NR, $0}' < filename

10
বা awk '{print NR, "\t", $0}'
jtbandes

1
নীচে উত্তর, এনএল কমান্ড লাইন সহ, একটি অনেক সহজ সমাধান।
ড্যানিয়েল রিবেইরো

2
@ ড্যানিয়েলিবিরোরো সহজ তবে নির্ভরযোগ্য এবং কম নমনীয়।
জোনাথন হার্টলি

@ ড্যানিয়েলরিবিয়েরো উত্তরটি উত্তরও nlভুল। উত্স কোডে, এটি আপনাকে কখনই সঠিক লাইন নম্বর দেবে না, কারণ এটি কেবল শ্বেত স্পেসের সাথে লাইন গণনা করে না।
অলিগোফ্রেন

@ জেটব্যান্ডস আপনার সমাধানটি লাইন নম্বর এবং ট্যাব (অন্তত আমার ম্যাকের উপরে) এর মধ্যে ফাঁকা স্থান যুক্ত করেছে
ইয়াসি ভেনস্টাইন

55

এনএল কমান্ড এটি করা উচিত, তবে এটি লাইন সংখ্যার আগেও স্থান যুক্ত করে। এটি লিনাক্স কোর্টিলসের অংশ।

nl lines.txt
 1  $bkWTN
 2  $cV8$.

4
আসলে, আপনি nlসংখ্যার আগে স্থানটি বাদ দিতে বলতে পারেন । -w1কোনও সংখ্যার সর্বনিম্ন প্রস্থটি এটি বলার জন্য কেবল বিকল্পটি ব্যবহার করুন
সিজেএম

2
'এনএল' ডিফল্টরূপে অনুমান করুন যে আপনার পাঠ্যটি 'পৃষ্ঠাগুলিতে' শিরোনাম এবং পাদচরণের সাথে বিভক্ত হয়েছে, সমস্ত '': 'বা' \: \: 'বা' \: \: \: 'এর মতো লাইন দ্বারা বিস্মৃত হয়েছে। যদি আপনার পাঠ্যটিতে এর মতো কোনও লাইন থাকে, তবে 'এনএল' অপ্রত্যাশিত ফলাফল আনবে, যেমন lines লাইনগুলিকে গ্রাস করে, কোনও নম্বরবিহীন বিভাগগুলি বা একটি বিভাগের 1 থেকে নম্বরটি পুনরায় আরম্ভ করে। এই আচরণটি রোধ করতে -dXY ব্যবহার করুন (যেখানে এক্সওয়াই হ'ল এক জোড়া অক্ষর যা আপনার পাঠ্যক্রমে নিজের দ্বারা কোনও লাইনে ঘটে না) এই আচরণটি রোধ করতে। সাধারণ ক্ষেত্রে, এটি অনুমান করা শক্ত হতে পারে, তাই আমি এই পৃষ্ঠার অন্য সমাধানগুলির মধ্যে একটি ব্যবহার করার পরামর্শ দেব।
জোনাথন হার্টলি

'-W1 ব্যবহার করা শুধু সংখ্যার পরে জায়গা সরানো হবে না, কিন্তু হবে অগ্রভাগ ছাঁটিয়া শুধুমাত্র একটি অক্ষর চওড়া হওয়া রেখা নম্বর, যার অর্থ আপনার লাইন নম্বর শুধুমাত্র তাদের অন্তত উল্লেখযোগ্য অঙ্ক প্রদর্শন। এটি প্রায়শই আপনি যা চান তা নয়।
জোনাথন হার্টলি

4
সঙ্গে -nlnআপনি পারেন বাম-ন্যায্যতা আপনি রেখা নম্বর আগে জায়গা (গুলি) না চান তাহলে। এছাড়াও, আপনি যে ট্যাব বিভাজকটি ব্যবহার করতে পারেন তা নির্দিষ্ট করতে -s$'\t'বা -s' '( ctrl+vতারপরে একক উদ্ধৃতিগুলির মধ্যে একটি ট্যাব সন্নিবেশ করানো tab) করতে পারেন।
don_crissti

2
@ জোনাথান হার্টলি nl -w1(জিএনইউ কোর্টিল ৮৮.২৪ থেকে) লাইন নম্বরগুলি কেটে দেয় না
স্কিপি লে গ্র্যান্ড গৌরূ 8'18

10
sed = test.txt | sed 'N;s/\n/\t/'

"সেড =" কমান্ডটি ক্যারেজ রিটার্নের পরে লাইন নম্বর এবং তার পরের লাইনটি প্রিন্ট করবে।

"N; s / \ n / \ t /" এক্সপ্রেশনটি প্রতিটি লাইন নেবে, পরবর্তী লাইনটি (অর্থাত্ লাইন নম্বর এবং লাইন) পাবে এবং ক্যারিয়ারের রিটার্নটি একটি ট্যাব দ্বারা প্রতিস্থাপন করবে।


আমার সংস্করণের সাথে কোনও ট্যাব ছাড়াই একটি "টি" প্রিন্ট করুন: 8 টি আমি আমার প্রজন্মের সেরা মনগুলিকে 9 টি উন্মাদনা দ্বারা ধ্বংস করে দিয়েছি, অনাহারে উলঙ্গ হয়েছি,
রিচার্ড হোসকিন্স

1
নোটটি \nহ'ল লাইন ফিড (সাধারণত "নিউলাইন" বলা হয়, যেহেতু এটির প্রথম বিস্তৃত ব্যবহার ইউনিক্সে ছিল) এবং \rএটি ক্যারেজ রিটার্ন। উইন্ডোজ ব্যবহার করে \r\n(এছাড়াও হিসাবে চিহ্নিত করা হয় CRLF)।
কামিলো মার্টিন

(ইয়ে নিটপিকিং!)
কামিলো মার্টিন

উইন্ডোজ কীভাবে আলাদা হতে পারে সে সম্পর্কে যদি আমরা নীটপিকিংয়ে যাব, তবে আমাদের ইউটিএফ 16 বিবেচনা করতে হবে।
mc0e

4
cat -n <yourfile> | perl -pe "s/^\s*(\d+)\s+/\1\t/"

বিড়াল -n লিনেন নাম্বারগুলিকে "123 লাইনকন্টেন্টস" হিসাবে যুক্ত করে এবং রেজিএক্সএক্স এটিকে "লিনেনবারট্যাব্লিনিকন্টেন্টস" এ পরিবর্তন করে



2

কেমন

cat -n somefile.txt

?


1
কোনও ট্যাব নেই। (15 টি অক্ষরের প্রয়োজন মন্তব্যগুলি একটি বোকা প্রয়োজন))
রিচার্ড হোসকিন্স

1
এটি আমার সিস্টেমে ট্যাব তৈরি করে। বিড়াল (জিএনইউ কোর্টিল) 6.10।
ইন্নাম

আমার সিস্টেমে এটি (ট্যাব) নম্বর (স্পেস) লাইন যুক্ত করে। বিএসডি ইউটিস
রিচার্ড হোসকিনস

2

ঠিক আছে, এখানে একটি লাইন বাশ সমাধান:

$ IFS=$'\n';x=1;for l in $(<file.txt);do echo -e "$x\t$l";((x+=1));done
$ IFS=

প্রথম আইএফএস সেটিংটি একবারে সম্পূর্ণ লাইন পড়তে বাশকে বলে। দ্বিতীয় লাইনটি আইএফএসকে ডিফল্টরূপে পুনরায় সেট করে।

একটি যুক্ত বোনাস হিসাবে, এটি আপনার শেলের মধ্যে পুরোপুরি চলে এবং কোনও প্রোগ্রাম চালায় না!


1

ঠিক আছে, যেহেতু আমরা এটি করার উপায়গুলি সংগ্রহ করছি,

 grep -n . file.txt | sed 's/\(^[0-9]*\):/\1    /g'
 # this is a tab with Ctrl-V + Tab  =====>  ---- 

এখন আমি এটি দেখতে। ঠিক আছে, আমার নিজের পোস্ট মুছুন। কি? আপনি বলছেন যে এসইউ আপনাকে নিজের পোস্ট মুছতে দেয় না?
কেভিন এম


1
sed file.txt -e 's/^/\t/' | cat -n | sed -e 's/^\t//'

বা কিছু অ-জিএনইউ'র জন্য sed:

cat file.txt | sed -e 's/^/\\t/' | cat -n | sed -e 's/^\\t//'

আমার সেডের সংস্করণ সহ কোনও ট্যাব ছাড়াই একটি "টি" মুদ্রণ করে।
রিচার্ড হোসকিন্স

দ্বিগুণ-পালাতে সম্পাদিত; এটি চেষ্টা করুন।
বিশৃঙ্খলা

যদি সমস্ত কিছু ব্যর্থ হয় তবে কেবল ট্যাবটি চাপুন। :) (অথবা ^ ভী ট্যাব যদি আপনার শেল আপনি যে সঙ্গে কষ্ট দেয়।)
বিশৃঙ্খলার

সেড: 1: "test.txt": অপরিজ্ঞাত লেবেল 'est.txt'
রিচার্ড

'cat test.txt | sed -e 's / ^ / \\ t /' | বিড়াল-এন 'প্রিন্ট (ট্যাব) নম্বর (স্থান) \ টি (লাইন)
রিচার্ড হোসকিন্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.