小编cho*_*oba的帖子

从 unix 变量中删除换行符

我有一个变量,其值是使用 sql 查询找到的。

我想从该变量中删除新行字符,因为我想将此变量与另一个连接起来。下面是代码:

dt=`sqlplus -s user/pwd@servicename <<EOF
set feedback off;
set head off;
select  replace(to_char((sysdate-7),'YYYYMonDD')||'_'||to_char((sysdate-1),'YYYYMonDD'),chr(10), '') from dual;
exit;
EOF`

echo "test $dt"
Run Code Online (Sandbox Code Playgroud)

sed

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

以下哪些代码会在当前shell的同一个进程中运行

一种。 { echo "Hello World"; } >outputfile

B. ( echo "Hello World" ) >outputfile

C。 ./anothershell.sh

D. /bin/echo "Hello World"

哪个是对的?以及什么样的命令可以在当前shell的同一个进程中运行?

bash process

6
推荐指数
2
解决办法
523
查看次数

使用 sed 打印范围内的选定行

考虑简化文件

AAA
BBB
CCC1
DDD
EEE
CCC2
DDD
FFF
GGG
CCC3
HHH
Run Code Online (Sandbox Code Playgroud)

我可以挑选出的范围内EEE,以FFF

sed -n '/EEE/,/FFF/p'
Run Code Online (Sandbox Code Playgroud)

假设我想打印任何包含C但仅在匹配范围内的行。我可以sed通过管道传输结果grep

sed -n '/EEE/,/FFF/p' | grep 'C'
Run Code Online (Sandbox Code Playgroud)

我也可以做一个小范围和匹配awk脚本(或perlpython等等)。但是我将如何仅使用一次调用来做到这一点sed

sed pattern-matching

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

在 bash 脚本变量赋值不起作用

我有一个问题,我需要用 shell 脚本编写程序,所以我打开了一本关于 linux 的书,其中有一章是关于 bash 脚本的。编写一个测试脚本来测试我遇到的命令似乎是个好主意,但第一个脚本不起作用,并且以其他明显的方式更改它并不能解决问题。

示例中显示的脚本是:-

#!/bin/bash
count=10
nextcount=$count + 1
echo $count
echo $nextcount
Run Code Online (Sandbox Code Playgroud)

运行这个脚本的结果应该是什么

[Carl@localhost bin]$ testscript
10
11
Run Code Online (Sandbox Code Playgroud)

然而实际结果是

[Carl@localhost bin]$ testscript
/home/Carl/bin/testscript: line 3: +: command not found
10
Run Code Online (Sandbox Code Playgroud)

错误消息表明“+”号被解释为命令而不是加法运算符。

如果我删除“+”号周围的空格,使脚本变成

#!/bin/bash
count=10
nextcount=$count+1
echo $count
echo $nextcount

[Carl@localhost bin]$ testscript
10
10+1
Run Code Online (Sandbox Code Playgroud)

第 3 行语句而不是将 1 加 10 得到 11 连接“10”、“+”和“1”

更改 line3 以读取nextcount=$count +1nextcount=$count+ 1也不起作用。

在脚本编写教科书的第一个示例中发现无法解决的问题不应该发生。我要疯了吗?

bash shell-script

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

如何在目录中多个文件的文件扩展名之前添加当前日期?

如何在目录中多个文件的文件扩展名之前添加当前日期?

原始文件:

Expenses.log
Allowances.log
Run Code Online (Sandbox Code Playgroud)

输出:

Expenses_20170624.log
Allowances_20170624.log
Run Code Online (Sandbox Code Playgroud)

此命令在文件扩展名后附加日期。:(

for file in *; do mv "$file" "${file}_$(date +"%d%m%Y")"; done
Run Code Online (Sandbox Code Playgroud)

bash sed awk shell-script rename

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

标签 统计

bash ×3

sed ×3

shell-script ×2

awk ×1

pattern-matching ×1

process ×1

rename ×1