相关疑难解决方法(0)

用'sed'添加

我正在尝试使用 执行数学运算sed,但它继续将我的变量视为字符串。输入是这样的:

$ echo 12 | sed 's/[0-9]*/&+3/'
$ 12+3
Run Code Online (Sandbox Code Playgroud)

我想要 15 作为输出。我只需要在一个段落中执行操作并替换其数学结果,因为我将程序作为 Python 守护程序运行,并且我想避免像重定向stdout文件、打开这些文件、执行操作、提取结果、执行这样的段落更换。对我来说,sed似乎最好在一行中执行所有操作。

我尝试以各种方式同时投射输入和输出,例如

$ echo 12 | sed 's/[0-9]*/int(&+3)/'
$ echo 12 | sed 's/[0-9]*/\int(&+3)/'
$ echo 12 | sed 's/[0-9]*/\int(&+3)/'
Run Code Online (Sandbox Code Playgroud)

但结果总是打印第二个字段。

sed math

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

插入带有缺失值的新行 (NA)

如果缺少值,我想在文本文件中插入新行。例如,我有以下文本文件 (A.txt),缺少第 5 行。此外,由于文件应该有 12 行,因此第 11-12 行也丢失了。

1 2.30
2 3.01
3 3.22
4 3.34
6 3.01
7 2.90
8 2.99
9 3.00
10 3.02
Run Code Online (Sandbox Code Playgroud)

我的预期输出如下。对于缺失的情况,应添加一行,其中包含编号和 NA。如您所见,这在第 5、11 和 12 行按预期发生:

1 2.30
2 3.01
3 3.22
4 3.34
5 NA
6 3.01
7 2.90
8 2.99
9 3.00
10 3.02
11 NA
12 NA
Run Code Online (Sandbox Code Playgroud)

我可以通过使用以下脚本来做到这一点:

f1=/my-directory/
echo "new file" > "$f1"/newfile.txt  

for i in {1..12}; do
l=$(awk '{print $1}' /"$f1"/A.txt | grep -wE ^$i /"$f1"/A.txt)
if grep --quiet …
Run Code Online (Sandbox Code Playgroud)

shell grep text-processing

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

标签 统计

grep ×1

math ×1

sed ×1

shell ×1

text-processing ×1