小编lee*_*oon的帖子

用“du”以字节为单位打印

我正在使用du -sh查看目录的大小。如果我检查一个 1KB 的目录,我会看到:

1.0K    .
Run Code Online (Sandbox Code Playgroud)

但是,我想要以字节为单位的输出,并且只需要字节数。

例如:

$ du -sh .
1024
Run Code Online (Sandbox Code Playgroud)

bash filesize du

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

[[:upper:]] 和 [:upper:] (bash) 有什么区别?

因此,我在 macOS High Sierra 10.13.6 下使用 bash 3.2.57(1)-release,并尝试编写一个需要不区分大小写输入的 bash 脚本。我读到 usingtr "[:upper:]" "[:lower:]" <<< "$(echo AaBbCcDd)"会将整个字符串转换为小写,它确实如此。不过,我在其他地方读到过使用'[[:UPPER:]]'and'[[:LOWER:]]'代替。这些似乎仍然有效,但这让我想知道,这两者之间有什么区别吗?

regex bash shell tr

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

bash 无法访问括号内的变量

在 bash 中,如果我运行

(foo=14)
Run Code Online (Sandbox Code Playgroud)

然后尝试稍后在我的 bash 脚本中引用该变量:

echo "${foo}"
Run Code Online (Sandbox Code Playgroud)

我什么也没得到。我怎样才能让 bash 按照我需要的方式存储这个变量?

具体来说,我在 if 语句中使用它并检查退出代码,类似于:

if (bar="$(foo=14;echo "${foo}"|tr '1' 'a' 2>&1)")
then
    echo "Setting "'$bar'" was a success. It is ${bar}"
else
    echo "Setting "'$bar'" failed with a nonzero exit code."
fi
Run Code Online (Sandbox Code Playgroud)

variables macos bash if-statement

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

替换 txt 文件中每一行匹配文本的第一个实例

我有一个 .txt 文件,我想替换每一行第一次出现的匹配字符串。

例如,下面是 foo.txt 中的内容:

838dbc65cd79e16cf09f90abb928e3f3d0ea2d775cf8edc8acaabde6d393bc76  /Volumes/Documents - Part 1/legos.png
415ccf1e05fb5985d2f719deabec7bb5d22aeaac7b82cca885010b12d483d997  /Volumes/Documents - Part 1/folder/Volumes/Documents - Part 1/another folder/Volumes/Documents - Part 1 BU/fedora linux.7z
f3d0ea2d775cf8edc1ddbd76e2562d3e4a2e281fe2aeb1333ef99536d1a180ee  /Volumes/Documents - Part 1/manuals/dryer.pdf
\ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad  /Volumes/Documents - Part 1/Test Hash Folder/#;."'&,\\{2}:`!*?$(){}[]<>|-=+% [meowzers] (1)~^^.$[E-frLOL[MAY[]{}()?<NUL>
\9c993445f7f6216b4fc7d35aef47afa16f4f831f2510b7fddd1e42c4cafb518c  /Volumes/Documents - Part 1/Test Hash Folder/#;."'&,\\:`!CAT      MEOW!!![hey]{15}(hello)@$%&^*(#@@*?$(){}[]<>|-=+% ~^^.$[E-frLOL[MAY[]{}()?<NUL>
Run Code Online (Sandbox Code Playgroud)

我要替换Documents - Part 1与Documents - Part 1 BU,但只有在每一行的第一次出现。

所以,它最终看起来像这样:

838dbc65cd79e16cf09f90abb928e3f3d0ea2d775cf8edc8acaabde6d393bc76  /Volumes/Documents - Part 1 BU/legos.png
415ccf1e05fb5985d2f719deabec7bb5d22aeaac7b82cca885010b12d483d997  /Volumes/Documents - Part 1 BU/folder/Volumes/Documents - Part 1/another folder/Volumes/Documents - …
Run Code Online (Sandbox Code Playgroud)

macos bash grep text-processing sed

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

现在在 Postgresql 中 - 仅显示日期

我需要NOW()在 Postgres 11.5 中使用并需要获取如下所示的日期:

2019-10-07
Run Code Online (Sandbox Code Playgroud)

又名 YYYY-MM-DD 风格。我该怎么做呢?仅NOW()单独使用就给我带来了时间和一切的巨大字符串。

sql postgresql timestamp date

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

tr -d从字符串中删除确切的字符串

我试图tr -d从现有的字符串中删除一串字符,而不是删除其他地方的字符.

例如,我想从每个字符串的末尾tr删除.: OKfoo.txt

内容foo.txt:

BROKEN BONES: OK
Kefen Odvora: OK
BOOKS_FOR_MUM: OK
E: OK Amded: OK
Run Code Online (Sandbox Code Playgroud)

这是我运行的命令:

cat foo.txt | tr -d ": OK$"
Run Code Online (Sandbox Code Playgroud)

我希望它输出这个:

BROKEN BONES
Kefen Odvora
BOOKS_FOR_MUM
E: OK Amded
Run Code Online (Sandbox Code Playgroud)

但相反,我得到了这个,我不想要:

BRENBNES
efendvora
BS_FR_MUM
EAmded
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

Mac OS X Yosemite,bash 3.2.57(1) - 发布

unix bash awk sed tr

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

sed:删除除最后 n 个字符以外的所有字符

我试图删除文本字符串中除剩余 11 个字符之外的每个字符。字符串是Sample Text_that-would$normally~be,here--pe_-l4_mBY,我想要结束的只是-pe_-l4_mBY.

这是我尝试过的:

$ cat food
Sample Text_that-would$normally~be,here--pe_-l4_mBY
$ cat food | sed 's/^.*(.{3})$/\1/'
sed: 1: "s/^.*(.{3})$/\1/": \1 not defined in the RE
Run Code Online (Sandbox Code Playgroud)

请注意,文本字符串并没有真正存储在文件中,我只是用作cat food示例。

操作系统为 macOS High Sierra 10.13.6,bash版本为 3.2.57(1)-release

unix macos bash text-processing sed

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

标签 统计

bash ×6

macos ×3

sed ×3

text-processing ×2

tr ×2

unix ×2

awk ×1

date ×1

du ×1

filesize ×1

grep ×1

if-statement ×1

postgresql ×1

regex ×1

shell ×1

sql ×1

timestamp ×1

variables ×1