How to convert the line endings of a text file from DOS to Unix?
I have this php code saved in text file, I want to convert this text file to Unix line endings. How?
<?php
class City
{
private $lat=0.0;
private $lng=0.0;
private $name="";
private $visited=false;
private $order=1;
function City($name,$lat,$lng)
{
$this->name=$name;
$this->lat=$lat;
$this->lng=$lng;
}
function getName()
{
return $this->name;
}
function getLat()
{
return $this->lat;
}
function getLng()
{
return $this->lng;
}
function getOrder()
{
return $this->order;
}
function getVisited()
{
return $this->visited;
}
function setVisited($value)
{
$this->visited=$value;
}
function setOrder($value)
{
$this->order=$value;
}
}
class Main
{
public $allCities=array();
private $k=1;
private $totalDistance=0;
/*class main empty constructor*/
function Main()
{}
function sortArray()
{
for($i=count($this->allCities)-1;$i>=0;$i--)
{
for($j=$i-1;$j>=0;$j--)
{
if($this->allCities[$i]->getOrder()<$this->allCities[$j]->getOrder())
{
$temp=$this->allCities[$j];
$this->allCities[$j]=$this->allCities[$i];
$this->allCities[$i]=$temp;
}
}
}
}
/* method to read from cities.txt file */
function getCitiesFromTextFile()
{
$f="cities.txt";
$fo=fopen($f,'r');
while ( $line = fgets($fo, 1000) )
{
$delimiter=" ";
$temp = explode($delimiter, $line);
$c11=new City($temp[0],$temp[1],$temp[2]);
$this->allCities[]=$c11;
}
}
/* to print the data stored in an array ( without ordering the cities ) */
function displayAllCities()
{
for($i=0;$i<count($this->allCities);$i++)
{
print $this->allCities[$i]->getName()."<br>";
}
}
function rad($x)
{
return $x*pi()/180;
//return $x;
}
/* to calculate the distance between two cities */
function calculatedistance($city1,$city2)
{
$lat1=$city1->getLat();
$lng1=$city1->getLng();
$lat2=$city2->getLat();
$lng2=$city2->getLng();
// Spherical law of cosines: d = acos(sin(lat1).sin(lat2)+cos(lat1).cos(lat2).cos(long2-long1)).R
// R=3437.74677 (nautical miles)
// R=6378.7 (kilometers)
// R=3963.0 (statute miles)
$R = 6371; // earth's mean radius in km
$dLat = $this->rad($lat2 - $lat1);
$dLng = $this->rad($lng2 - $lng1);
$a = sin($dLat/2) * sin($dLat/2) +cos($this->rad($lat1)) * cos($this->rad($lat2)) * sin($dLng/2) * sin($dLng/2);
$c = 2 * atan2(sqrt($a), sqrt(1-$a));
$d = $R * $c;
return $d;
//$distance=acos(sin($lat1)*sin($lat2)+cos($lat1)*cos($lat2).cos($lng2-$lng1))*$R;
//return $distance;
}
/* to calculate the optimal path passing all cities once time for each city */
function findPath($start)
{
for($i=0;$i<count($this->allCities);$i++)
{
if($this->k>count($this->allCities))
break;
if($this->allCities[$i]->getName()==$start &&!$this->allCities[$i]->getVisited())
{
$this->allCities[$i]->setVisited(true);
$this->allCities[$i]->setOrder($this->k);
$lower_index=0;
$lower_dis=1000000;
for($j=0;$j<count($this->allCities);$j++)
{
if(!$this->allCit开发者_C百科ies[$j]->getVisited())
{
$dis=$this->calculatedistance($this->allCities[$j],$this->allCities[$i]);
if($dis<$lower_dis)
{
$lower_index=$j;
$lower_dis=$dis;
}
}
}
$this->k++;
$this->findPath($this->allCities[$lower_index]->getName());
}// enf if
}// end for
}// end function
/* method to display the total distance of the route passign all cities */
function getTotalDistance()
{
return $this->totalDistance;
}
}// end class
//$test=new City("Gaza",1.2,1.50);
$m=new Main();
$m->getCitiesFromTextFile();
//$m->displayAllCities();
$m->findPath("Beijing");
$m->sortArray();
$m->displayAllCities();
$m->getCitiesFromTextFile();
?>
There is a utility for this:
dos2unix -o $output_file $input_file
Check the man pages for more options.
There are other clever sed hacks too, but better use a tried and tested utility than hacking with sed, which one may not know that well.
Something like:
<?php
$file = file_get_contents("file.php");
$file = str_replace("\r", "", $file);
file_put_contents("file.php", $file);
=)
EDIT 1
If you are on Linux - there is the good editor named Kate
(converts encoding and line-end)
If dos2unix is not available, todos/fromdos might be:
fromdos <filename>
on *nix, without installing anything:
cat yourFile | tr '\r\n' '\n' > newFile
then, you can test your newFile, and replace the old one if you're happy
精彩评论