bbbb aaa,读取逗号前文本并使用shell脚本分别提取出第一个段字符和第二段字符串
时间: 2024-03-26 10:41:23 浏览: 94
你可以使用`cut`命令来实现按照逗号分割字符串,然后再使用`awk`命令来提取每一段的第一个字符和第二段字符串。
以下是示例代码:
```shell
text="bbbb aaa"
first_segment=$(echo "$text" | cut -d ',' -f 1 | cut -c 1)
second_segment=$(echo "$text" | cut -d ',' -f 2 | awk '{print $1}')
echo "First segment: $first_segment"
echo "Second segment: $second_segment"
```
这段代码的输出结果是:
```
First segment: b
Second segment: aaa
```
其中,`text`变量存储了你给出的字符串,`cut -d ',' -f 1`命令提取出逗号前的文本,`cut -c 1`提取出第一个字符,`cut -d ',' -f 2`提取出逗号后的文本,然后再使用`awk '{print $1}'`提取出第二段字符串中的第一个单词。
你可以根据自己的需求修改代码中的变量名和输出格式。
相关问题
在linux系统中写一个脚本,该脚本可以把SUM文件下的所有文本文件的绝对路径输出成一个文本文件FILE,随后根据FILE中相应的绝对路径,依次按顺序选取2个文本文件,从这两个文本文件中选取出的字符串AAAA和BBBB,并将AAAA和BBBB声明成变量A和B,然后进行对比这A和B这两个变量的大小,并输出结果
好的,我来回答你的问题。
首先,可以使用以下命令将SUM文件夹下的所有文本文件的绝对路径输出到一个名为FILE的文本文件中:
```
find /path/to/SUM -type f -name "*.txt" > FILE
```
其中,/path/to/SUM是SUM文件夹的路径。这个命令会将SUM文件夹下所有扩展名为txt的文件路径输出到FILE文件中。
接下来,可以使用以下脚本从两个文本文件中选取字符串并进行对比:
```bash
#!/bin/bash
# 从FILE文件中读取第一个文本文件的路径
file1=$(sed -n '1p' FILE)
# 从FILE文件中读取第二个文本文件的路径
file2=$(sed -n '2p' FILE)
# 从第一个文本文件中选取字符串AAAA
A=$(sed -n '1p' "$file1")
# 从第二个文本文件中选取字符串BBBB
B=$(sed -n '1p' "$file2")
# 将A和B转换为数字
A=$(echo "$A" | tr -d '\n' | od -An -t d)
B=$(echo "$B" | tr -d '\n' | od -An -t d)
# 对比A和B的大小并输出结果
if [ "$A" -gt "$B" ]; then
echo "A is greater than B"
elif [ "$A" -lt "$B" ]; then
echo "B is greater than A"
else
echo "A is equal to B"
fi
```
其中,sed命令用于从文本文件中选取指定行的字符串,tr命令用于删除字符串中的换行符,od命令用于将字符串转换为数字。
运行上述脚本后,将会输出A和B的大小比较结果。
在linux系统中写一个脚本,该脚本可以把SUM文件下的所有以S为后缀的文件夹的绝对路径输出成一个文本文件FILE,随后根据FILE中相应的绝对路径,依次按顺序选取2个文本文件,从这两个文本文件中选取出的字符串AAAA和BBBB,并将AAAA和BBBB声明成变量A和B,然后进行对比这A和B这两个变量的大小,并输出结果,这个变量大小按照FILE中路径的个数进行循环对比,直到所有的绝对路径都被对比完成,输出“完成数据对比”
好的,以下是一个可能的脚本实现:
```bash
#!/bin/bash
# 遍历SUM文件夹下所有以S为后缀的文件夹,输出其绝对路径到FILE
find /path/to/SUM -type d -name "*S" -printf "%p\n" > FILE
# 读取FILE中所有路径到数组paths
mapfile -t paths < FILE
# 对每个路径进行循环处理
for ((i=0; i<${#paths[@]}-1; i++)); do
# 选取路径下的前两个文本文件
files=( "${paths[i]}"/*.txt )
if (( ${#files[@]} < 2 )); then
# 如果不足两个文件则跳过
continue
fi
# 读取选取的两个文件的第一行到变量A和B
A=$(head -n 1 "${files[0]}")
B=$(head -n 1 "${files[1]}")
# 比较A和B的大小
if [[ "$A" -gt "$B" ]]; then
echo "$A > $B"
elif [[ "$A" -lt "$B" ]]; then
echo "$A < $B"
else
echo "$A = $B"
fi
done
echo "完成数据对比"
```
需要将 `/path/to/SUM` 替换成实际的SUM文件夹的路径。这个脚本会将所有符合条件的路径输出到FILE中,然后逐个处理每个路径,选取前两个文本文件并进行对比,最后输出“完成数据对比”。
阅读全文