小编jes*_*e_b的帖子

使用换行符创建数组时出现问题

我正在构建一个函数来查找文件系统上的大型目录,并且包含该路径的每个数组元素中的该/n目录都被切断。/native/proc...我相信这与我使用“\n”作为我的 IFS 有关,但我不知道还能怎么做,因为如果没有它,它会将每一列分解成它自己的元素,这不是我想要的。我需要的是每个整行都在它自己的数组元素中,该命令如何自行打印:

[root@JBLGSMM001 ~]# du -k / 2> /dev/null | sort -n | tail -n 10
255452  /usr/share
332644  /native/proc/82974
342119  /native/proc/70315
344519  /native/proc/70310
388510  /native/usr
683983  /usr
1226993 /native/proc/45026
9597039 /native/proc
10035430        /native
10846908        /
Run Code Online (Sandbox Code Playgroud)

到目前为止的功能

where.isdisk () {

    bigstuff=$(du -k / 2> /dev/null | sort -n | tail -n 10)
    OLDIFS=$IFS
    IFS="\n"
    bigstuff=($bigstuff)
    IFS=$OLDIFS

}
Run Code Online (Sandbox Code Playgroud)

该bigstuff变量按照我想要的方式设置,如下所示:

255452 /usr/share 332644 /native/proc/82974 342119 /native/proc/70315 344519 /native/proc/70310 388510 /native/usr 683983 /usr 1226989 /native/proc/45026 9772351 …
Run Code Online (Sandbox Code Playgroud)

bash array shell-script quoting

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

我可以使用比较运算符吗?

我正在构建一个函数,该函数将计算给定安培数、距离(以英尺为单位)和允许电压降所需的电线规格。

给定这些值,我可以计算出“圆形密耳”,从而得到AWG 要求。我开始构建一个大型if elif声明来将圆形密耳与其受人尊敬的仪表进行比较,但我相信这case是正确的工具。

我还没有找到任何用于比较数字的案例示例,所以我想知道是否可以执行以下操作:

what.gauge () {

    let cmils=11*2*$1*$2/$3
    let amils=17*2*$1*$2/$3


    case $cmils in

        320-403)
            cawg="25 AWG"
            ;;
        404-509)
            cawg="24 AWG"
            ;;
        510-641)
            cawg="23 AWG"
            ;;

        etc...

}
Run Code Online (Sandbox Code Playgroud)

bash case

4
推荐指数
3
解决办法
3451
查看次数

如何在bash脚本中的json中查找键值的值

我正在尝试使用 make s curl 调用编写一个 bash 脚本并取回一个 json 文档。json 文档有一个名为的键access_token,我需要提取该字段的值。这是我的json文档

echo $json

{"access_token":"kjdshfsd", "key2":"value"}
Run Code Online (Sandbox Code Playgroud)

我没有jq安装。

bash awk json

4
推荐指数
2
解决办法
2万
查看次数

如何更改一堆 systemd 服务文件的用户?

我有一堆服务文件 /etc/systemd/service/myapp.*.service

每一个都有一条线,看起来像......

User=Foo
Run Code Online (Sandbox Code Playgroud)

...我需要更改所有这些 .service 文件,所以他们都说...

User=Bar
Run Code Online (Sandbox Code Playgroud)

我如何有效地做到这一点?

text-processing systemd

4
推荐指数
2
解决办法
242
查看次数

将文件名的最后一部分移到前面

我有几个这样命名的文件: This is a test - AB12-1998.avi

(最后一个代码总是 2 个字母、2 个数字、破折号、4 位数字)

我想做的是像这样重命名它们: AB12-1998 - This is a test.avi

我很感激您可以使用 bash、重命名或任何其他方式为我提供的任何解决方案,只要它能完成工作。

shell rename

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

我可以使用 bash 脚本将文本文件更改为带有网格线的电子表格吗?

我有以下信息,我希望它看起来像在带有标题的电子表格中。

cat TEXT-FILE.txt

SOMETHING5 : 11111111 : 1969-08-12 : 42.34
SOMETHING4 : 22222222 : 1969-08-12 : 700.12
SOMETHING3 : 333333333 : 1969-08-12 : 300.2
SOMETHING2 : 44444444444 : 1969-08-12 : 200.2
SOMETHING1 : 5555555555 : 1969-08-12 : 100.34
Run Code Online (Sandbox Code Playgroud)

这是我对脚本的了解

#!/bin/bash

for file in ./TEST-FILE.txt
do
        sed -i -e "s/:/|/g" $file
        sed -i '1iIdentify | Misc | Date | Amount | Confirmation ' $file
done
Run Code Online (Sandbox Code Playgroud)

现在的输出是:

Identify | Misc | Date | Amount | Confirmation
SOMETHING5 | 11111111 | 1969-08-12 | …
Run Code Online (Sandbox Code Playgroud)

linux bash

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

仅当目录中的 .xlsx 文件具有相同的文件名时才删除 .pdf 文件?

我有数百个文件夹pdf和xls(x)从合法电子发现系统大量导出的文件。这些导出中的文件名对应于 bates #,例如ABCD_00000001.pdf, ABCD_00000002.pdf, ... , ABCD_00002000.pdf. 这些批量导出pdf的每个 xls(x)文件都包含一个空白文件- 两者都具有完全相同的文件名。例如,ABCD_00000005.xlsx是在电子发现系统中生成的 xlsx 文件,并且ABCD_00000005.pdf是在批量导出中创建的无关的空白 pdf 文件。

这些无关的 .pdf 文件可能是由于运行这些批量导出的人员的用户错误造成的,但我通常无法控制流程的那一侧。所以我想知道是否有任何相对简单的方法来删除这些无关的 .pdf 而不强迫某人手动检查它们。

shell bash directory rm files

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

文件名的 awk/sed 部分

每当我将文件名作为参数放入命令行时,我只想 awk/sed 文件名的前缀。

例如,

我有多个文件:

a.fastq.gz
b.fastq.gz
c.fastq.gz
d.fastq.gz
Run Code Online (Sandbox Code Playgroud)

如果我执行:

sh test.sh --INFILE b.fastq.gz
Run Code Online (Sandbox Code Playgroud)

我想要的输出是:

b
Run Code Online (Sandbox Code Playgroud)

我尝试过但失败的是,

prefix="sed 's/.fastq//' ${INFILE}"
Run Code Online (Sandbox Code Playgroud)

command-line sed awk filenames

3
推荐指数
2
解决办法
795
查看次数

仅在函数范围内添加到数组

我正在写一个函数,这将使一个REST API调用这可能是要么GET,PUT,DELETE,POST,等。

我想将此方法作为参数提供给函数,并将其添加到该单个函数调用的选项数组中。这可能吗?

目前我正在通过创建一个单独的local数组来解决这个问题,但更喜欢只使用单个options数组。

#!/bin/bash

options=(
    --user me:some-token
    -H "Accept: application/json"
)

some_func () {
    local urn=$1
    shift
    local func_opts=("${options[@]}" "$@")
    printf '%s\n' "${func_opts[@]}"
}

# This should return all options including -X GET
some_func /test -X GET

# This should return only the original options
printf '%s\n' "${options[@]}"
Run Code Online (Sandbox Code Playgroud)

我也可以使用一个临时数组来存储 的内容options,添加新选项,然后在函数结束之前重置它,但我认为这也不是一个特别干净的方法。

bash array function

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

我可以将我的 bashrc 设置为 echo $ 吗?在特定命令之后?

我熟悉在我的 .bashrc 中设置简单的别名,并认为它可能能够做我想做的事,但不太确定如何去做。愿望:总是回声$?在特定程序完成执行后。我想在打印出相当笨拙的 STDERR 消息之后运行它的特定程序,即使成功,这些消息乍一看也像是一个错误。我总是回声 $? 在我实际阅读这些内容之前作为第一次检查之后,但至少有四分之一的时间输入错误并失去回声机会。我想做的是设置一个别名,以便在我输入时

$ foo --option [argument]
Run Code Online (Sandbox Code Playgroud)

它实际上

$ foo --option [argument]

working blah blah blah

$ echo $?
Run Code Online (Sandbox Code Playgroud)

这可能吗?

bash alias echo

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