我希望我的程序打印出我输入的文本,然后是该文本的前两个字符。有没有办法做到这一点?
#!/bin/bash
#
# Get text from user repeatedly
#
echo "Type away..."
while read TEXT
do
echo You typed $TEXT
if [ "$TEXT" = "quit" ] || [ "$TEXT" = "q" ] || [ "$TEXT" = "Q" ] || [ "$TEXT" = "QUIT" ]; then
echo So I quit!
exit 0
fi
done
echo "HELP!"
Run Code Online (Sandbox Code Playgroud) 这是输出:
sudo iwlist scan 2>/dev/null | grep ESSID | sed 's/.*ESSID:"\(.*\)".*/\1/' 2>/dev/null
Run Code Online (Sandbox Code Playgroud)
亚什沙 核心片段 CoreFragment_5G 核心片段 链接 亚什沙 康快 应用鸟_科技 共生 20096641 CoreFragment_5G AMBER_AP1 红翼实验室_5G
虽然在脚本中编写的相同内容不一样。
这是我使用上述命令的片段。
for ssid_name in $(sudo iwlist scan 2>/dev/null | grep ESSID | sed 's/.*ESSID:"\(.*\)".*/\1/' 2>/dev/null)
do
echo "$ssid_name"
done
Run Code Online (Sandbox Code Playgroud)
我得到这样的输出:
亚什 沙阿 核心片段 CoreFragment_5G 核心片段 亚什 沙阿 红翼 实验室 康快 应用鸟_科技 共生 CoreFragment_5G 红翼 LABS_5G
注意:当输出中有空格时,它将作为一个新行。
我正在使用 Ubuntu 18.04。
对于以下示例数据,两列都是数字,但第二列的位数不同。
2 9
1 1000
1 50
3 0
Run Code Online (Sandbox Code Playgroud)
我想根据两列进行排序。用数字标志分别指定它们-n,产生我想要的结果。
sort -n -k1,1 -k2,2 num.data.txt
Run Code Online (Sandbox Code Playgroud)
给
1 50
1 1000
2 9
3 0
Run Code Online (Sandbox Code Playgroud)
这就是我想要的。
然而,
sort -n -k1,2 num.data.txt
Run Code Online (Sandbox Code Playgroud)
给出似乎按字母顺序排序的数据:
1 1000
1 50
2 9
3 0
Run Code Online (Sandbox Code Playgroud)
我知道这sort -n -k1,2 num.data.txt与sort -n num.data.txt只有两列时(给出相同结果)相同,但我实际使用的数据有更多列。
为什么这两种方法之间存在这种差异?
我正在尝试在循环中使用 find 来创建一个变量,该变量包含一个与文件名 + 所需字符串匹配的文件
例子:
file1.en.srt
file1.mkv
file1.pt.srt
Run Code Online (Sandbox Code Playgroud)
这是代码的相关部分:
shopt -s nullglob
shopt -s nocaseglob
if [ -d "$1" ]; then
for file in "${1%/}/"*mkv; do
# Get filename to match against subs and audios
filename="$(basename "$file" .mkv)"
# Find matching subtitle file
engsubs="$(find . -name "$filename*en.srt*" | sed -e 's,^\./,,')"
# Find matching audio file
engaudio="$(find . -iname "$filename*en.ac3" -o -iname "$filename*en.eac3" -o -iname "$filename*en.dts" | sed -e 's,^\./,,')"
done
fi
Run Code Online (Sandbox Code Playgroud)
如果文件不包含括号,它会起作用,但find命令找不到名称包含括号的文件的任何内容。为什么会发生这种情况?我想创建一个像$en这样包含的变量file1.en.srt
如果我有一个像
arr[0]=2019-06-26
arr[1]=15:21:54
Run Code Online (Sandbox Code Playgroud)
我怎样才能把它转换成一个字符串,其值为
'2019-06-26 15:21:54'
Run Code Online (Sandbox Code Playgroud) bash ×3
shell-script ×3
array ×1
filenames ×1
find ×1
numeric-data ×1
sort ×1
string ×1
variable ×1