我正在尝试从包含管道("|")作为分隔符并包含空格的字符串创建数组.我一直在寻找一段时间,我已经接近了,比如像我如何在Bash中的分隔符上拆分字符串?,将字符串拆分成数组,然后更多.我很接近但不太合适.两个主要问题是字符串中有空格,有起始和结束分隔符,有些字段是空白的.此外,我不是只回显值,而是将它们分配给变量.这是源数据的格式:
|username|full name|phone1|phone2|date added|servers|comments|
Run Code Online (Sandbox Code Playgroud)
例:
|jdoe | John Doe| 555-1212 | |1/1/11 | workstation1, server1 | added by me |
Run Code Online (Sandbox Code Playgroud)
这就是我需要的:
Username: jdoe
Fullname: John Doe
Phone1: 555-1212
Phone2:
Date_added: 1/1/11
Servers: workstation1, server1
Comments: guest account
Run Code Online (Sandbox Code Playgroud)
编辑:我使用sed去掉每个分隔符之前和之后的第一个和最后一个分隔符和空格,现在输入:
jdoe|John Doe|555-1212||1/1/11|workstation1, server1|added by me
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的事情:
oIFS="$IFS"; IFS='|'
for line in `cat $userList`; do
arr=("$line")
echo "Username: ${arr[0]}" #not assigning a variable, just testing the output
echo "Full Name: ${arr[1]}"
echo "Phone 1: ${arr[2]}"
echo "Phone 2: ${arr[3]}" …Run Code Online (Sandbox Code Playgroud) 在bash中有什么方法可以解析这个文件名:
$file = dos1-20120514104538.csv.3310686
变成$date = 2012-05-14 10:45:38和变量$id = 3310686?
谢谢
我有一个总是有 4 个“单词”的字符串
Strings:With:Four:Words and spaces
Run Code Online (Sandbox Code Playgroud)
并且需要在 Bash 中将其拆分为 4 个变量。所以..
var1="Strings"
var2="With"
var3="Four"
var4="Words and spaces"
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?
我需要编写一个具有以下行为的脚本:
$ echo $'one&some text\ntwo&other text' | ./my_script.sh --delimiter &
Line:
1st: one
2nd: some tex
Line:
1st: two
2nd: other text
Run Code Online (Sandbox Code Playgroud)
也可以使用默认分隔符来调用,即\t:
$ echo $'one\tsome text\nfive\tother text' | ./my_script.sh
输出应该与上面相同。
脚本应通过标准输入获取输入。
做到这一点最简单的方法是什么?可能是在纯粹的bash中。
我已经尝试过这种方法,但它不起作用,我不知道为什么:
while read -r line
do
echo "$line"
IFS=$DELIMITER
arr=(${line//$DELIMITER/ })
echo ${arr[0]}
echo ${arr[1]}
done
Run Code Online (Sandbox Code Playgroud) 如何大写+连接字符串的单词?
(首字母大写,所有其他字母小写)
例:
input = "jAMeS bOnD"
output = "JamesBond"
我想逐行读取文件,用逗号(,)分隔每一行并将结果存储在数组中.如何在bash shell脚本中执行此操作?
逗号分隔文件中的示例行
123,2014-07-21 10:01:44,123|8119|769.00||456|S
Run Code Online (Sandbox Code Playgroud)
这应该是拆分后的输出:
arr[0]=123 arr[1]=2014-07-21 10:01:44 arr[2]=123|8119|769.00||456|S
Run Code Online (Sandbox Code Playgroud) 我有类似的字符串
name1::1.1.1.1::ps -ax
Run Code Online (Sandbox Code Playgroud)
我想使用 bash 脚本根据分隔符分割字符串::。
所需的输出应该是一个包含 3 个元素的数组
("name1" "1.1.1.1" "ps -ax")
Run Code Online (Sandbox Code Playgroud)
不带双引号
我感谢您的帮助。
我有一个脚本,它使用 valgrind 执行我的单元测试。现在脚本变大了,因为我可能有 10 个抑制文件(每个库一个),而且我可能不得不添加更多抑制文件。
现在,而不是有这样的一行:
MEMCHECK_OPTIONS="--tool=memcheck -q -v --num-callers=24 --leak-check=full --show-below-main=no --undef-value-errors=yes --leak-resolution=high --show-reachable=yes --error-limit=no --xml=yes --suppressions=$SUPPRESSION_FILES_DIR/suppression_stdlib.supp --suppressions=$SUPPRESSION_FILES_DIR/suppression_cg.supp --suppressions=$SUPPRESSION_FILES_DIR/suppression_glut.supp --suppressions=$SUPPRESSION_FILES_DIR/suppression_xlib.supp --suppressions=$SUPPRESSION_FILES_DIR/suppression_glibc.supp --suppressions=$SUPPRESSION_FILES_DIR/suppression_glib.supp --suppressions=$SUPPRESSION_FILES_DIR/suppression_qt.supp --suppressions=$SUPPRESSION_FILES_DIR/suppression_sdl.supp --suppressions=$SUPPRESSION_FILES_DIR/suppression_magick.supp --suppressions=$SUPPRESSION_FILES_DIR/suppression_sqlite.supp --suppressions=$SUPPRESSION_FILES_DIR/suppression_ld.supp --suppressions=$SUPPRESSION_FILES_DIR/suppression_selinux.supp --suppressions=$SUPPRESSION_FILES_DIR/suppression_opengl.supp"
Run Code Online (Sandbox Code Playgroud)
我试着这样做:
MEMCHECK_OPTIONS="--tool=memcheck -q -v --num-callers=24 --leak-check=full --show-below-main=no --undef-value-errors=yes --leak-resolution=high --show-reachable=yes --error-limit=no --xml=yes --suppressions=$SUPPRESSION_FILES_DIR/*.supp"
Run Code Online (Sandbox Code Playgroud)
但 valgrind 需要一个文件名(不接受星号)。
由于我在 bash 脚本中执行此操作,有人可以告诉我形成该行的最简单方法是什么吗?
我想过列出抑制目录中的所有文件,然后遍历该列表,并添加--suppressions=前缀。
编辑
我忘了问。这是我到目前为止:
ALL_SUPPRESION_FILES=`ls $SUPPRESSION_FILES_DIR/*.supp`
Run Code Online (Sandbox Code Playgroud)
但我找不到如何将其传输到数组中。有人可以帮忙吗?
我想在具有以下条件的bash shell脚本中拆分字符串.
1)分隔符是一个变量
2)分隔符是多个haracater
例:
A quick brown fox
var=brown
Run Code Online (Sandbox Code Playgroud)
我想将字符串拆分为A quick,brown fox但是使用变量var作为分隔符而不是brown
我熟悉awk程序中使用的函数split().我想知道如何使用它将字符串拆分成长度为n的较小字符串?像(n设置为2)的东西:
输入:
abcdefgh
Run Code Online (Sandbox Code Playgroud)
输出:
ab cd ef gh
Run Code Online (Sandbox Code Playgroud)