使用简单的bash脚本,我生成一个包含许多行的文本文件:
192.168.1.1
hostname1
192.168.1.2
hostname2
192.168.1.3
hostname3
现在我想重新格式化这个文件,看起来像这样:
192.168.1.1 hostname1
192.168.1.2 hostname2
192.168.1.3 hostname3
我将如何以这种方式重新格式化?也许是sed
?
答案 0 :(得分:40)
$ sed '$!N;s/\n/ /' infile
192.168.1.1 hostname1
192.168.1.2 hostname2
192.168.1.3 hostname3
答案 1 :(得分:33)
这是一个仅限shell的替代方案:
while read first; do read second; echo "$first $second"; done
答案 2 :(得分:21)
我喜欢这个解决方案的简单性
function ifproductPublished($productID){
$conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT product_status FROM product_list WHERE product_id='$productID'";
$result = $conn->query($sql);
if ($result->num_rows > 0)
{
while($row = $result->fetch_assoc()) {
$product_status = $row["product_status"];
if($product_status == 1){
return true;
} else {
return false;
}
}
} else {
echo "No results found";
}
$conn->close();
}
或以逗号分隔而不是空格分隔
cat infile | paste -sd ' \n'
192.168.1.1 hostname1
192.168.1.2 hostname2
192.168.1.3 hostname3
如果您的输入文件有第三行,如timestamp
cat infile | paste -sd ',\n'
然后唯一的变化是在分隔符列表中添加另一个空格
192.168.1.1
hostname1
14423289909
192.168.1.2
hostname2
14423289910
192.168.1.3
hostname3
14423289911