我是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 脚本存储输入。
基本上,当出现输入提示时,我会粘贴一些行,然后将该存储的变量写入文本文件。经过一番搜索后,我确实遇到了 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) 我想与来自我的 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。
我可以在像这样的 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) 我试图找到一种方法,在此命令中使用变量将 -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) 我编写了这个脚本:
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)
有任何想法吗?