ঠিক একই স্টাইলিং / ফর্ম্যাটিং করতে 2 বা ততোধিক লিবারঅফিস ডকুমেন্ট পরিবর্তন করুন


14

বলুন আমার প্রায় 100 টি .rtfফাইলের সাথে আমার একটি ডিরেক্টরি রয়েছে যা আমি LibreOffice Writer দিয়ে সম্পাদনা করি।

আমি ইচ্ছা করি যে ডিরেক্টরিটিতে থাকা সমস্ত ফাইলের ঠিক একই বেসিক সমৃদ্ধ পাঠ্য স্টাইলিং-দিকনির্দেশনা থাকবে, উদাহরণস্বরূপ:

* font-family: Ubuntu             # All text in all files is now Ubuntu;
* font-size: 12px                 # All text in all files is now 12px big;
h1: 28px                          # All h1's are now 28px big;
if font-size: 18px {make it 22px} # All text with font-size 18px is now 22px;

এবং আরও এগিয়ে ... সুতরাং, মূলত আমি একবারে সমস্ত ফাইল পরিবর্তন করতে চাই। এ জাতীয় "বাল্ক-স্টাইলিং" কি সম্ভব?

হয়তো এটি কোনওভাবে সিআইএলির মাধ্যমে সম্ভব?


3
আমার মনে হয় এটি কোনও সহজ কাজ হবে না। যদি সেগুলি একইভাবে কাঠামোগত হয় তবে আপনি সম্ভবত কমান্ড লাইন থেকে .rtf ফাইলগুলিতে পাঠ্য প্রতিস্থাপনের সাথে কিছু হ্যাকি সমাধান ব্যবহার করতে পারেন। যাইহোক, এটি আরটিএফ ফাইলগুলি কেমন দেখায় এবং সেগুলির তুলনায় কেমন তা নির্ভর করে।
সেবাস্তিয়ান স্টার্ক

আজ রাত্রে স্ক্র্যাচ থেকে শুরু করে একটি সম্পূর্ণ নতুন LibreOffice Writer ম্যাক্রোর জন্য স্ট্যাক ওভারফ্লোতে সহায়তা পেয়েছি। আমাদের আর বিদ্যমান সম্ভাব্য ফন্টের আকার জানার দরকার নেই।
WinEunuuchs2 ইউনিক্স

: একটি শেষ খাদে প্রচেষ্টায় আমি আগে অনুগ্রহ সময়কাল শেষ এখানে একটি উত্তর পোস্ট করতে স্ট্যাক ওভারফ্লো বিশেষজ্ঞদের জিজ্ঞাসা করেছি stackoverflow.com/questions/49640951/...
WinEunuuchs2Unix

আপনার ছেলেরা কয়েক হাজার খ্যাতি পয়েন্ট আছে। আমি বিনীতভাবে পরামর্শ দিচ্ছি যে আপনি 500-750 এর মতো কিছু দেওয়ার কথা বিবেচনা করুন। শুধু বিবেচনা। শুধু ঠিক।
জনডোইয়া

উত্তর:


5

সি এল এলির পরিবর্তে লিব্রিওফিস সরঞ্জামগুলি ব্যবহার করুন

আপনার সমস্ত কমান্ড লাইন সরঞ্জামগুলি হ'ল সবকিছু কমান্ড লাইন সমস্যার মতো দেখায়। আমি এই উত্তরটি LibreOffice ম্যাক্রো ব্যবহার করে লেখার সিদ্ধান্ত নিয়েছি:

  1. "হেডলেস" পরিবেশে প্রতিটি লেখক ডকুমেন্ট প্রক্রিয়া করতে একটি কমান্ড লাইন লুপ ব্যবহার করুন।
  2. পরিবর্তন করতে ম্যাক্রো চালান .rtf(সমৃদ্ধ পাঠ্য ফর্ম্যাট) লেখকের নথির ফাইল।
  3. ম্যাক্রো ফাইল সংরক্ষণ করে প্রস্থান করে
  4. লুপ ফিরে 1।

পরীক্ষার ডেটা তৈরি করুন

দুটি বা আরও বেশি ফাইল যুক্ত করুন:

richtext2.png

এতে স্ক্রিপ্ট তৈরি করুন ~/Downloads/copy-rtf.sh:

cp ~/Documents/*.rtf ~/Downloads

এক্সিকিউটেবল ব্যবহার করে চিহ্নিত করুন

chmod a+x ~/Downloads/copy-rtf.sh
  • বিকাশ এবং পরীক্ষার সময়, ম্যাক্রো সংশোধনকারী *.rtfফাইলগুলি ~/Downloadsডিরেক্টরিটির বিরুদ্ধে চলবে ।
  • প্রতিটি পরীক্ষার আগে cd ~/Downloadsএবং চালানোর আগে./copy-rtf.sh
  • আউটপুট নিখুঁত হওয়ার পরে এগুলি লাইভ ডিরেক্টরিতে আবার অনুলিপি করা হয়।

ডাউনলোড ডিরেক্টরিটি ব্যবহৃত হয় কারণ:

  • প্রত্যেকের একটি আছে ~/Downloads
  • এটি নিয়মিত যুক্ত হয় এবং ম্যানুয়ালি পর্যায়ক্রমে খালি হয়ে যায়
  • এটি /tmp/ডিরেক্টরি থেকে বেশি স্থায়ী যা পুনরায় বুটগুলি জুড়ে নাও থাকতে পারে।

মাথাহীন পরিবেশে ম্যাক্রো চালান

এই স্ট্যাক এক্সচেঞ্জের উত্তরটি ব্যবহার করে কমান্ড লাইন থেকে লিব্রিফাইস লেখককে অনুরোধ করা হয়েছে এবং এটি কার্যকর করতে বিশ্বব্যাপী ম্যাক্রো নামটি প্রদান করুন:

soffice -headless -invisible "vnd.sun.star.script:Standard.Module1.MySubroutine? language=Basic&location=application"

উপরের উত্তরটি কাজ করতে পারে না তাই অন্য একটি পদ্ধতির চেষ্টা করা যেতে পারে:

soffice "macro:///Standard.SaveCSV.Main" $1

জাভা রানটাইম এনভায়রনমেন্ট ইনস্টল করুন

ম্যাক্রোগুলি চালানোর জন্য আপনার জাভা রানটাইম এনভায়রনমেন্ট (জেআরই) ইনস্টল করা দরকার। বিকাশকারীর ওয়েব পৃষ্ঠায় ম্যানুয়ালি ডাউনলোড এবং ইনস্টল করার জন্য নির্দেশাবলী রয়েছে ।

তবে এই এউ প্রশ্নোত্তর: /ubuntu//a/728153/307523 পরামর্শ দেয় এটি এতটা সহজ:

sudo apt-add-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer oracle-java8-set-default

আমি এউ কিউ এবং এ পদ্ধতিটি চেষ্টা করেছি এবং পিপিএ যুক্ত করার প্রথম ধাপের পরে অতিরিক্ত তথ্য সহ একটি স্প্ল্যাশ স্ক্রিন উপস্থিত হবে appears সর্বাধিক সহায়ক হ'ল ডেবিয়ান সিস্টেমে জেআরই 8 স্থাপনের লিঙ্ক ।

জেআরই 8 ইনস্টল করার তৃতীয় ধাপে আপনাকে লাইসেন্স চুক্তিটি ব্যবহার Tabএবং Enterগ্রহণ করতে হবে। ইনস্টলেশন রুটিনের সবচেয়ে ভারী অংশের সময় আপনার মেশিনটি কয়েক মিনিটের জন্য বিরতি দেবে।

এখন LibreOffice খুলুন এবং সরঞ্জামগুলি -> বিকল্পগুলি -> LibreOffice -> উন্নত করুন এবং এই স্ক্রিনটি সেটআপ করুন:

LO JRE8 অ্যাডভান্সড সেটআপ.পিএনজি

এর জন্য বিকল্পগুলি ক্লিক করুন:

  • একটি জাভা রানটাইম পরিবেশ ব্যবহার করুন
  • ওরাকল কর্পোরেশন 1.8.0_161
  • ম্যাক্রো রেকর্ডিং সক্ষম করুন (পরীক্ষামূলক)
  • ঠিক আছে ক্লিক করুন
  • আপনাকে পুনঃসূচনা করতে বলা হবে, "এখনই পুনরায় চালু করুন" এ ক্লিক করুন।

LibreOffice লেখক ম্যাক্রো

ম্যাক্রো পুরো নথির মাধ্যমে পড়বে এবং:

  • উবুন্টুতে ফন্টের নাম পরিবর্তন করুন।
  • 1 সেট ফন্টের আকার 28 এ শিরোনাম হলে
  • অন্যথায় যদি ফন্টের আকার 18 সেট হয়ে থাকে 22
  • অন্যথায় ফন্টের আকার 12 এ সেট করুন

ম্যাক্রো দস্তাবেজ সংরক্ষণ করবে এবং Libreoffice Writer থেকে প্রস্থান করবে।

ডায়ালগ বন্ধ করুন

একটি ফাইল সংরক্ষণ করুন এবং এই ডায়ালগটি আসবে:

এলও রাইটার আরটিএফ ডায়ালগ বন্ধ করে দেয়

স্ক্রিনে শো হিসাবে এই বার্তাটি বন্ধ করুন। এই বিকল্পটি চালু থাকলে ম্যাক্রো সঠিকভাবে চলতে পারে না।

ম্যাক্রো বিষয়বস্তু

আমি "সরঞ্জাম" -> "ম্যাক্রোস" -> "রেকর্ড ম্যাক্রো" -> "বেসিক" ব্যবহার করে ম্যাক্রো রেকর্ড করতে কয়েক দিন ব্যয় করেছি। প্রথমে এটি আশাব্যঞ্জক বলে মনে হয়েছিল তবে রেকর্ড করা ম্যাক্রোর বেমানান আচরণ ছিল এবং হাতে লেখা বেসিক ম্যাক্রোর জন্য তা ত্যাগ করতে হয়েছিল। বেসিক বেসিক কোডিংয়ে আমাকে সহায়তা করার জন্য সেখানে বিশেষজ্ঞের জন্য স্ট্যাক ওভারফ্লোতে একটি সহায়তা পেয়েছে । ফলাফল এখানে:

Sub ChangeAllFonts
    rem - Change all font names to Ubuntu.
    rem - If heading 1 set font size to 28
    rem - else if font size is 18 set to 22
    rem - else set font size to 12
    rem - The macro will save document and exit LibreOffice Writer.
    Dim oDoc As Object
    Dim oParEnum As Object, oPar As Object, oSecEnum As Object, oSec As Object
    Dim oFamilies As Object, oParaStyles As Object, oStyle As Object
    oDoc = ThisComponent
    oParEnum = oDoc.Text.createEnumeration()
    Do While oParEnum.hasMoreElements()
      oPar = oParEnum.nextElement()
      If oPar.supportsService("com.sun.star.text.Paragraph") Then
        oSecEnum = oPar.createEnumeration()
        Do While oSecEnum.hasMoreElements()
          oSec = oSecEnum.nextElement()
          If oSec.TextPortionType = "Text" Then
            If oSec.ParaStyleName = "Heading 1" Then
                rem ignore for now
            ElseIf oSec.CharHeight = 18 Then
                oSec.CharHeight = 22.0
            Else
                oSec.CharHeight = 12.0
            End If
          End If
        Loop
      End If
    Loop
    oFamilies = oDoc.getStyleFamilies()
    oParaStyles = oFamilies.getByName("ParagraphStyles")
    oStyle = oParaStyles.getByName("Heading 1")
    oStyle.setPropertyValue("CharHeight", 28.0)
    FileSave
    StarDesktop.terminate()
End Sub

rem Above subroutine is missing call to UbuntuFontName ()
rem also it is calling oStyle.setPropertyValue("CharHeight", 28.0)
rem which may cause problems. Will test. Also StarDesktop.terminate ()
rem is known to cause problems and will likely be reworked with a
rem a dialog box telling operator the program is finished and maybe
rem to press <Alt>+<F4>.

rem ========= Original code below for possible recycling ===========

Sub AllFonts
rem - change all font names to Ubuntu.
rem - If heading 1 set font size to 28
rem - else if font size is 18 set to 22
rem - else set font size to 12

rem The macro will save document and exit Libreoffice Writer.

Dim CharHeight As Long, oSel as Object, oTC as Object
Dim CharStyleName As String
Dim oParEnum as Object, oPar as Object, oSecEnum as Object, oSec as Object
Dim oVC as Object, oText As Object
Dim oParSection        'Current Section

oText = ThisComponent.Text
oSel = ThisComponent.CurrentSelection.getByIndex(0) 'get the current selection
oTC = oText.createTextCursorByRange(oSel)           ' and span it with a cursor

rem Scan the cursor range for chunks of given text size.
rem (Doesn't work - affects the whole document)

oParEnum = oTC.Text.createEnumeration()
Do While oParEnum.hasMoreElements()
  oPar = oParEnum.nextElement()
  If oPar.supportsService("com.sun.star.text.Paragraph") Then
    oSecEnum = oPar.createEnumeration()
    oParSection = oSecEnum.nextElement()
    Do While oSecEnum.hasMoreElements()
      oSec = oSecEnum.nextElement()
      If oSec.TextPortionType = "Text" Then
        CharStyleName = oParSection.CharStyleName
        CharHeight = oSec.CharHeight
        if CharStyleName = "Heading 1" Then
            oSec.CharHeight = 28
        elseif CharHeight = 18 Then
            oSec.CharHeight = 22
        else
            oSec.CharHeight = 12
        End If
      End If
    Loop
  End If

Loop

FileSave
stardesktop.terminate()

End Sub


Sub UbuntuFontName
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------- Select all text ------------------------------------------
dispatcher.executeDispatch(document, ".uno:SelectAll", "", 0, Array())

rem ----------- Change all fonts to Ubuntu -------------------------------
dim args5(4) as new com.sun.star.beans.PropertyValue
args5(0).Name = "CharFontName.StyleName"
args5(0).Value = ""
args5(1).Name = "CharFontName.Pitch"
args5(1).Value = 2
args5(2).Name = "CharFontName.CharSet"
args5(2).Value = -1
args5(3).Name = "CharFontName.Family"
args5(3).Value = 0
args5(4).Name = "CharFontName.FamilyName"
args5(4).Value = "Ubuntu"

dispatcher.executeDispatch(document, ".uno:CharFontName", "", 0, args5())

end sub


sub FileSave
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Save", "", 0, Array())

end sub

2

এখানে লিবির অফিস ব্যবহার করে এক বন্ধ উপায় রয়েছে। এটি ব্যাচ নয়, তবে এটি অন্যান্য উত্তরগুলিকে অনুপ্রাণিত করতে সহায়তা করতে পারে।

একটি আরটিএফ ফাইল খুলুন যার মধ্যে উবুন্টু ফন্ট রয়েছে, এইচ 1 হ'ল 28 পিটি, কিছু পাঠ্য 12pt এ এবং কিছুতে 18 পিটি।

এখানে একটি উদাহরণ:

পরীক্ষা আরটিএফ

নিম্নলিখিত পদক্ষেপগুলি আপনার প্রশ্নে অনুরোধ করা পরিবর্তনটি প্রয়োগ করবে "যদি হরফ আকার: 18px {এটি 22px করুন} # ফন্ট-আকার 18px সহ সমস্ত পাঠ্য এখন 22px;"

সম্পাদনা ক্লিক করুন এবং মেনুতে সন্ধান করুন এবং প্রতিস্থাপন ক্লিক করুন বা CtrlHঅন্যান্য বিকল্পগুলি হিট করুন বা তার জন্য অনুসন্ধানের জন্য ক্লিক করুন বাক্সের জন্য বৈশিষ্ট্য বোতাম ফন্টের আকার চেক বাক্সটি ফর্ম্যাট বোতামটি ডানদিকে ডানদিকে স্ক্রোল বাক্স থেকে 18 পন্ট নির্বাচন করুন তারপরে বাক্সের সাথে প্রতিস্থাপন করুন ক্লিক করুন এবং ফর্ম্যাট থেকে 22 পিটি নির্বাচন করুন খুব ডানদিকে স্ক্রোল বাক্স

FindNreplace

সমস্ত প্রতিস্থাপন ক্লিক করুন

প্রযোজ্য রেখাটি যা পরিবর্তিত হয়েছিল তা হ'ল:

\ পার ard পার্ড \ প্লেইন \ এস0 \ কিউএল \ উইদেক্টলপার \ হাইফপার0 \ এলটিআরপিআর f সিএফ 1 \ কার্নিং 1 \ ডিবিচ \ আফ7 \ ল্যাংএফ 1081 \ ডিবিচ \ আফ7 \ আফস 24 \ অ্যালং 1081 \ ল্যাচ \ এফ 3 \ বিএফ 13 স্প {t rtlch \ ltrch \ loch \ fs36 \ loch \ f6

fs36 fs44 এ পরিবর্তিত হয়েছে

পরিবর্তিত কেবলমাত্র অন্য ক্ষেত্রটি ছিল রিভিটাইম ক্ষেত্র যা আপনি আপডেট করতে বা নাও চান:

{\ Revtim \ yr2018 \ mo3 \ dy31 \ hr22 \ min19}

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


1

আরটিএফ স্পেসিফিকেশনে কেউ কীভাবে এটি সম্পর্কে যেতে পারে সে সম্পর্কে কয়েকটি দুর্দান্ত সূত্র রয়েছে

এখানে আমার সমস্যা বিশ্লেষণ।

আপনার নজরে আসার সাথে সাথে সিএলআই ব্যবহার করে এটি সম্পূর্ণ করা সহজতম পদ্ধতির বলে মনে হবে কারণ আমি কোনও জিইআইআই ভিত্তিক অ্যাপ্লিকেশন দেখিনি যা এই ধরণের ব্যাচের রূপান্তর পরিচালনা করতে পারে। মনে হচ্ছে আপনি কেবল শিরোনামটি সংশোধন করতে পারবেন:

শিরোনামটিতে নিম্নলিখিত বাক্য গঠন রয়েছে:

<header>
    \rtf <charset> \deff? <fonttbl> <filetbl>? <colortbl>? <stylesheet>? <listtables>? <revtbl>?

Each of the various header tables should appear, if they exist, in the above order. Document properties can occur before and between the header tables. A property must be defined before being referenced. Specifically:

* The style sheet must occur before any style usage.

* The font table must precede any reference to a font.

* The \deff keyword must precede any text without an explicit reference to a font, because it specifies the font to use in such cases.

ব্যক্তিগতভাবে, এই তথ্যের পর্যালোচনা করার পরে আমার কাছে এটি ঘটে যে আপনি যা করার চেষ্টা করছেন তা সবকিছু ফন্ট নির্বাচন থেকে শুরু করে শৈলীতে শিরোনামে সমর্থিত বলে মনে হচ্ছে

এই প্রক্রিয়াটিতে আপনাকে সহায়তা করার জন্য এমন সরঞ্জামাদি রয়েছে যা আমি নীচে রূপরেখা করব কারণ আপনার কাছে নথির শৈলীর উদাহরণ নেই যা আপনি চান নথির শৈলী এবং আরও জেনেরিক উত্তর সম্ভবত সম্প্রদায়ের তুলনায় আরও বেশি কাজে আসবে আপনার সঠিক পরিস্থিতি লক্ষ্য করে একটি।

grepরূপান্তরিত হওয়ার জন্য বিদ্যমান ফাইলগুলি এবং বর্তমান <fonttbl>এবং
<stylesheet>নির্বাচনের জন্য লক্ষ্য শৈলীর একটি নমুনা পার্স করতে দরকারী হবে । আপনার কাছে যা রয়েছে তা নির্ধারণ করে, আপনার sedবিদ্যমান শিরোলেখ সামগ্রীটি পছন্দসই শিরোনামের সামগ্রীটির সাথে প্রতিস্থাপনের জন্য একটি সাধারণ স্ক্রিপ্ট লিখতে সক্ষম হওয়া উচিত । ব্যাশ স্ক্রিপ্টে ( উদাহরণস্বরূপ ) ফাইলগুলির মাধ্যমে কীভাবে পুনরাবৃত্তি করা যায় এবং এই ধারণাগুলির সাথে আপনি যদি অপরিচিত থাকেন তবে কীভাবে নিখরচায়ভাবে সেড ( উদাহরণস্বরূপ ) ব্যবহার করতে হবে তার অসংখ্য উদাহরণ রয়েছে ।

একটি ফাইলের স্ট্রিং প্রতিস্থাপন করার জন্য একটি লাইন বিকল্প রয়েছে। কিছু আপনার ব্যবহারের ক্ষেত্রে নির্ভর করে অন্যদের চেয়ে ভাল কাজ করতে পারে। আপনার ফাইল বিষয়বস্তুর উপর নির্ভর করে তা সহজ ধারণা প্রতিটি উদাহরণের প্রতিস্থাপন করতে পারে আবার নাও পারে fs36সঙ্গে fs44কোন শেল আপনি ব্যবহার করছেন আপনার এক্সপ্রেশন লিখতে কীভাবে সেরা উপর জন্মদান থাকতে পারে। আপনার দস্তাবেজগুলির জটিলতা এবং বিষয়বস্তুর উপর নির্ভর করে আপনি আরও ভাল ব্যবহার করতে পারেন sed, perlবা grepএগুলির একটি মিশ্রণও। যেহেতু এটি একটি প্রোগ্রামিংয়ের প্রশ্নে পরিণত হয়েছে এটি আপনাকে /programming/15402770/how-to-grep-and-rerere উল্লেখ করা ভাল যেখানে আপনি সহজেই একটি 1/2 ডজন বিভিন্ন পন্থা খুঁজে পাবেন, এর মধ্যে একটি যা আপনার প্রয়োজনগুলি নিখুঁতভাবে মাপসই করে।

উদাহরণস্বরূপ, আপনি যদি এই পরিবর্তনগুলিকে পুরোপুরি প্রয়োগ করতে চান,

find /path/to/files -type f -exec sed -i 's/oldstring/newstring/g' {} \;যেমন দ্বারা উপলব্ধ rezizter সম্ভবত সবচেয়ে ভাল।

আপনি যদি কোনও একক ডিরেক্টরিতে আপনার পরিবর্তনগুলি রাখতে চান তবে

grep -rl matchstring somedir/ | xargs sed -i 's/fs36/fs44/g'বিল্টিয়ান দ্বারা সরবরাহিত হিসাবে একটি দুর্দান্ত পছন্দ।

নিরাপদ পাশে থাকার জন্য আপনাকে ফাইলগুলি প্রাক প্রসেস করতে হবে তা নিশ্চিত করার জন্য যে আপনি যে পরিবর্তনগুলি করতে পারেন তার অনিচ্ছাকৃত পরিণতি হবে না। এই ক্ষেত্রে:

<!-- language: lang-bash -->

    #!/bin/bash
    for f in *.rtf 
        do
        echo $f
        grep fs36
        done

উপরেরটি ডিরেক্টরিতে প্রতিটি .rtf ফাইলের জন্য অনুসন্ধান স্ট্রিং fs36 ধারণকারী লাইনগুলি প্রদর্শন করবে।

সম্পাদনা:

সর্বাধিক সাম্প্রতিক স্পেসিফিকেশন এখানে পাওয়া যাবে। এই পদ্ধতির প্রভাব ফেলতে পারে এমন কোনও পরিবর্তন আমি দেখছি না।


1
হ্যালো, আমি প্রথমে একটি সি এল এল সমাধান বর্ণনা করার জন্য আপনাকে ধন্যবাদ জানাই। আপনি কীভাবে rtfএকটি শিরোনাম এবং পাঠ্যের সাহায্যে কোনও পরিবর্তন করবেন sedযাতে উত্তরটি কেন্দ্রীভূত হবে দয়া করে একটি কোড উদাহরণ ভাগ করুন sed
জনডোইয়া

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