相关疑难解决方法(0)

从定界符上的文件中剪切字符串

我是bash的新手,我有一个包含一些字符串记录的文件,比方说

1,2,3,4,5
6,7,8,9,10
11,12,13,14,15
Run Code Online (Sandbox Code Playgroud)

我需要制作另一个如下所示的文件:

2 4 5 3 1
7 9 10 8 6
...
Run Code Online (Sandbox Code Playgroud)

但是我得到了这个:

2 4 5
3 1
7 9 10
8 6
Run Code Online (Sandbox Code Playgroud)

该问题可能是由于以下事实造成的:在行的末尾没有定界符,并且在打印时需要输入Enter,但是我不知道该如何解决。

#!/bin/bash

FILE=file.txt
a=$(cut -d',' -f2 $FILE)
b=$(cut -d',' -f4 $FILE)
c=$(cut -d',' -f5 $FILE)
d=$(cut -d',' -f3 $FILE)
e=$(cut -d',' -f1 $FILE)


paste <(echo "$a") <(echo "$b") <(echo "$c") <(echo "$d") <(echo "$e") --delimiters ' '> new.txt
Run Code Online (Sandbox Code Playgroud)

bash shell

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

将文件读入变量保留空格和换行符

正如问题所暗示的那样,我打算使用单个变量以原始格式通过 bash 脚本存储输入。

基本上,当出现输入提示时,我会粘贴一些行,然后将该存储的变量写入文本文件。经过一番搜索后,我确实遇到了 readarray 但它没有将输入/粘贴存储在其原始粘贴状态

只是为了简单起见,假设我打算存储在变量中的输入/粘贴如下:

1
 2
  3
   4
    5
Run Code Online (Sandbox Code Playgroud)

预期脚本

#!/bin/bash
#the part i need help with ( Store the multiple line input/paste in raw format in a variable called let say test ) 
....
echo "$test" > test.txt
cat test.txt
Run Code Online (Sandbox Code Playgroud)

这应该完全按照我在控制台输入提示期间粘贴的格式打印 1..5 / 也显示在上面

编辑 - 可能有人好奇我的实际用例是什么,所以我举了一个例子,我的粘贴在实际用例中实际上是什么。我使用 1..5 示例只是为了简单起见。

https://cdn.jwplayer.com/videos/XXXizsW4-32313922.mp4
  out=Lecture 01- AS 1 Theory.mp4
https://cdn.jwplayer.com/videos/XXX6XFPB-32313922.mp4
  out=Lecture 02- AS 1 Question.mp4
https://cdn.jwplayer.com/videos/XXXIeQNM-32313922.mp4
  out=Lecture 03- AS 2 Theory.mp4
Run Code Online (Sandbox Code Playgroud)

我只会以这种格式粘贴文本

https://link
  out=Some-Name.mp4 ( 2 spaces before word out …
Run Code Online (Sandbox Code Playgroud)

unix linux bash awk sed

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

如何使用变量在bash中运行内联python?

我想与来自我的 bash 脚本的变量一起运行 python 内联命令。它在没有导入行的情况下工作。

for filename in *.txt; do
    OUT=$(python3 -c "import pprint\nprint('$filename')")
    mv $file $OUT
done
Run Code Online (Sandbox Code Playgroud)

但我收到错误消息SyntaxError: unexpected character after line continuation character

python bash shell

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

我可以在 Bash case 语句中使用函数作为测试吗?

我可以在像这样的 bash 语句中使用函数而不是常规模式、字符串等吗case

#!/bin/bash

var="1"

is_one () {
[$var -eq 1]
}

case $var in

    is_one) 
    "var is one"
    ;;
    
    *) 
    "var is not one"
    break
    ;;
    
esac
Run Code Online (Sandbox Code Playgroud)

bash case

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

Shell:将变量插入命令中

我试图找到一种方法,在此命令中使用变量将 -10 替换为 n_days var:

   n_days= -10
   date_prefix=$(date -d '-10 day' +%Y/%m/%d)
Run Code Online (Sandbox Code Playgroud)

我尝试了这种方法,但没有成功:

   date_prefix=$(date -d '${n_days} day' +%Y/%m/%d)
Run Code Online (Sandbox Code Playgroud)

unix linux bash shell date

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

字符串变量插值

我编写了这个脚本:

for i in `seq 1 $1`; do
        timestamp=$(uuidgen)
        cat $2.json | jq '.transactionId = "$timestamp"' > $3/$timestamp.json
done
Run Code Online (Sandbox Code Playgroud)

我的问题是,jq '.transactionId = "$timestamp"'因为文件的内容是:

{
  "transactionId": "$timestamp"
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

bash sh jq

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

标签 统计

bash ×6

shell ×3

linux ×2

unix ×2

awk ×1

case ×1

date ×1

jq ×1

python ×1

sed ×1

sh ×1