我正在尝试从包含管道("|")作为分隔符并包含空格的字符串创建数组.我一直在寻找一段时间,我已经接近了,比如像我如何在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) 我对sed非常熟悉,但我不太了解awk,我不知道如何解决这个问题.我已经google了一段时间但到目前为止没有运气.情况就是这样:我有一个包含组和部分的大文件,如下所示:
<A1>
some nr of lines
</A1>
<A2>
some nr
of lines
</A2>
<B1>
some
nr of
lines
</B1>
<B2>
some nr of lines
</B2>
<B3>
bla
</B3>
<C1>
bla
</C1>
<C2>
bla
</C2>
Run Code Online (Sandbox Code Playgroud)
现在问题是组的数量可以改变,部分的数量可以改变,并且每个部分中的行数可以改变.例如,A部分可能转到25,B部分可能转到8,依此类推.我需要做的是删除某些组的所有条目,在上面的示例中,我想删除所有内容<B*>
,留下以下内容:
<A1>
some nr of lines
</A1>
<A2>
some nr
of lines
</A2>
<C1>
bla
</C1>
<C2>
bla
</C2>
Run Code Online (Sandbox Code Playgroud)
另外,我想删除几个部分(尽管这些部分可以在单独的运行中),例如,如果文件从A1转到R123,我想要删除B*,F*,M*等.
如果有类似的事情已经被问到并在某处我回答道歉,我确实在发布之前找到了解决方案.
谢谢!