小编sha*_*ard的帖子

是否可以通过在 Bash 中进行除法来获得十进制输出?

基本上在 Bash 中,我想要做的是从用户那里输入几秒钟并找到小时数。所以基本上如果用户输入 35,输出应该是 0.00972222。

但是 bash 给我的是零。

这是我的命令:

echo "Enter the seconds you wish to convert to hours: " && read sec && echo " $((sec/3600)) is the amount of hours "
Run Code Online (Sandbox Code Playgroud)

有没有办法让它在我输入 35 时打印出 0.00972222。

谢谢!

bash floating-point

8
推荐指数
1
解决办法
3万
查看次数

Shell 程序,它使用行号读取行和输出行

我需要编写一个程序,从文件中读取行并将行stdin写入stdout行号。我无法使用cat -n.

假设文本文件有这个:

 abcdef
 ghi

 klm
 nopqr st
Run Code Online (Sandbox Code Playgroud)

它应该基本上读取这些行并输出这些行,但带有行号。

这是我的 while 读取循环,但它不会打印出每一行。

while read line
do
    awk '{print NR, $0}'

done < file
Run Code Online (Sandbox Code Playgroud)

基本上这个输出是这样的:

1 ghi
2 
3 klm
4 nopqr   st
Run Code Online (Sandbox Code Playgroud)

出于某种原因,abcdef没有出现,数字 2 不应该是空白的。

bash shell-script

5
推荐指数
2
解决办法
5413
查看次数

在不使用 sed 的情况下交换每行的前两个单词

我想知道是否有一种更简单的方法来交换每行的前两个单词。

假设我的文本文件由以下三行组成:

 Mary Joe
 William Edward
 Shawn Liam
Run Code Online (Sandbox Code Playgroud)

最终我想要这个:

 Joe Mary 
 Edward William
 Liam Shawn
Run Code Online (Sandbox Code Playgroud)

我知道这可以通过 sed 命令来完成:

sed -e "s/\([^ ]*\) *\([^ ]*\)/\2 \1 /g" file
Run Code Online (Sandbox Code Playgroud)

但要记住的太多了。

有没有更简单的方法来做到这一点。

这是 bash 顺便说一句。

text-processing

3
推荐指数
1
解决办法
7111
查看次数

使用 sed 替换文本并输出到新行并打印

我需要更改替换文件中的文本并使用更改后的文本输出整个文本文件并将其打印到屏幕上。

这是我得到的:

sed 's/123/456/g' number > number123
Run Code Online (Sandbox Code Playgroud)

这会将文本和输出更改为新文件,但不会打印到终端。

我如何获得它,以便在该命令中将更改后的文本文件打印到终端。

任何帮助表示赞赏。

bash sed

1
推荐指数
1
解决办法
5367
查看次数

在文本编辑器中创建 shell 脚本

我想知道如何在文本编辑器中创建 shell 脚本。

所以这就是我在文本编辑器中的内容。

#!/bin/bash
mkdir -p temp
cd temp

if [ $1 > $2 ] ;
then
    echo $1
else
    echo $2
fi

./max.sh 4 6
./max.sh -2 -5
./max.sh 7 -3
Run Code Online (Sandbox Code Playgroud)

所以基本上在文本编辑器中,我想创建一个名为 max.sh 的 shell 脚本,以便在它下面我可以通过它但在同一个文本编辑器中传递参数。

为了更清楚地说明:

我希望 if 语句位于名为 max.sh 的脚本中,因此在它下面我可以使用参数调用 max.sh 并且它会起作用。

bash shell-script

1
推荐指数
1
解决办法
978
查看次数

查找在该文件中包含某个单词的文件。

所以基本上我有三个文件,两个具有 744 权限,一个具有 601 权限,我想列出具有权限 744 的文件的名称,此外,它还必须在文件行中的任何位置都有字符串“def”。

如果他们有权限 744,我得到的只是如何打印出来:

find * -perm 744
Run Code Online (Sandbox Code Playgroud)

我如何获得它以便它可以检查字符串“def”?

任何帮助表示赞赏。

bash

1
推荐指数
1
解决办法
252
查看次数