উদাহরণস্বরূপ ফাইলটি এখানে:
somestuff...
all: thing otherthing
some other stuff
আমি যা করতে চাই তা হল এর সাথে শুরু হওয়া লাইনে যুক্ত করা all:
:
somestuff...
all: thing otherthing anotherthing
some other stuff
উত্তর:
এটি আমার পক্ষে কাজ করে
sed '/^all:/ s/$/ anotherthing/' file
প্রথম অংশটি একটি সন্ধানের প্যাটার্ন এবং দ্বিতীয় অংশটি $
একটি লাইন শেষের জন্য ব্যবহার করে একটি সাধারণ সেডের প্রতিস্থাপন ।
প্রক্রিয়া চলাকালীন আপনি যদি ফাইলটি পরিবর্তন করতে চান তবে -i
বিকল্পটি ব্যবহার করুন
sed -i '/^all:/ s/$/ anotherthing/' file
অথবা আপনি এটিকে অন্য কোনও ফাইলে পুনর্নির্দেশ করতে পারেন
sed '/^all:/ s/$/ anotherthing/' file > output
$0
শর্তটির সাথে মেলে যদি আপনি পাঠ্যটিকে আঁকড়ে রাখতে পারেন:
awk '/^all:/ {$0=$0" anotherthing"} 1' file
/patt/ {...}
যদি রেখাটি প্রদত্ত প্যাটার্নটির সাথে মেলে patt
তবে তার মধ্যে বর্ণিত ক্রিয়াটি সম্পাদন করুন {}
।/^all:/ {$0=$0" anotherthing"}
যদি লাইনটি শুরু হয় (প্রতিনিধিত্ব করে ^
) দিয়ে all:
, তবে anotherthing
লাইনে যুক্ত করুন।1
সত্য শর্ত হিসাবে, এর ডিফল্ট ক্রিয়াকে ট্রিগার করে awk
: বর্তমান লাইনটি মুদ্রণ করুন ( print $0
)। এটি সর্বদা ঘটবে, সুতরাং এটি হয় মূল লাইনটি মুদ্রিত করবে বা পরিবর্তিত কোনও।আপনার প্রদত্ত ইনপুটটির জন্য এটি ফিরে আসে:
somestuff...
all: thing otherthing anotherthing
some other stuff
নোট আপনি ভেরিয়েবল যুক্ত করতে পাঠ্য সরবরাহ করতে পারে:
$ awk -v mytext=" EXTRA TEXT" '/^all:/ {$0=$0mytext} 1' file
somestuff...
all: thing otherthing EXTRA TEXT
some other stuff
awk: can't set $0
/usr/xpg4/bin/awk
কোনটি "ভাল" অবাস্তব।
ব্যাশে:
while read -r line ; do
[[ $line == all:* ]] && line+=" anotherthing"
echo "$line"
done < filename
এখানে আরও একটি সহজ সমাধান সেড ব্যবহার করে।
$ sed -i 's/all.*/& anotherthing/g' filename.txt
ব্যাখ্যা:
all। * এর অর্থ সমস্ত লাইন 'সমস্ত' দিয়ে শুরু হয়েছিল।
এবং ম্যাচের প্রতিনিধিত্ব করুন (অর্থাত্ 'সমস্ত' দিয়ে শুরু হওয়া সম্পূর্ণ রেখা)
তারপরে সেডটিকে আগেরটির সাথে প্রতিস্থাপন করে এবং 'অন্য কিছু' শব্দ যুক্ত করে
বিশ্রী সহ সমাধান:
awk '{if ($1 ~ /^all/) print $0, "anotherthing"; else print $0}' file
সহজভাবে: সারিটি যদি সারিটি all
"অন্য কিছু" মুদ্রণের সাথে শুরু হয় তবে অন্য সারিটি মুদ্রণ করুন।
awk '$1=="all:" {$(NF+1)="anotherthing"} 1'
condition {actions}
জোড়া দিয়ে তৈরি। যদি condition
বাদ দেওয়া হয় তবে প্রতিটি রেকর্ডের জন্য ক্রিয়া সম্পাদন করা হয়। যদি {actions}
বাদ দেওয়া হয়, এবং শর্তটি সত্যের (যা সংখ্যার ক্ষেত্রে হয় 1
) মূল্যায়ন করে তবে ডিফল্ট ক্রিয়াটি হ'ল বর্তমান রেকর্ডটি মুদ্রণ করা।