我有 2 行無法理解的 sed
我知道 sed 的語法是:
sed 選項 [腳本] [輸入檔案]
但是在下面的這個命令中沒有輸入檔案我只是好奇這是在做什么,非常感謝任何幫助
1.
$(echo $d | sed 's/.*\///g')#
cat /kaldi/README | sed "s/akiplaner/${n}/g" > extracted/$nf/etc/README #
*注意:下面是整個代碼
for d in /dir1/dataset/audios/*; do
echo $d
n=$(echo $d | sed 's/.*\///g') #
nf=${n}
echo $n $a $nf
mkdir -p extracted/$nf/wav
mkdir -p extracted/$nf/etc
rm -f extracted/$nf/etc/prompts-original
rm -f extracted/$nf/etc/PROMPTS
cat /kaldi/README | sed "s/akiplaner/${n}/g" >extracted/$nf/etc/README #
for f in $d/*.wav; do
n2=$(echo $f | sed 's/.*\///g')
n3=$(echo $n2 | sed 's/\.wav//g') # removing .wav from $n2 string
echo $n2
echo $n3
cp $f extracted/$nf/wav/$n2
#sox --vol 0.01 $f -t wav extracted/$nf/wav/$n2;
normalize-audio -a 0.3 extracted/$nf/wav/$n2
cp $d/$n3.txt temp.txt
echo "$n3 $(cat temp.txt)" >>extracted/$nf/etc/prompts-original
echo "${nf}/mfc/${n3} $(cat temp.txt)" >>extracted/$nf/etc/PROMPTS
done
a=$(($a 1))
done
uj5u.com熱心網友回復:
沒有輸入檔案我只是好奇這是在做什么
答案就在您的指尖。
$ LC_ALL=C sed --help
...
... if no input files are
specified, then the standard input is read.
注意:|shell 運算子將一個命令標準輸出連接到另一個命令的標準輸入。對于 shell 流和輸入輸出操作的基本介紹,互聯網上肯定有無窮無盡的資源——這可能是研究其中一些的好時機,例如https://mywiki.wooledge.org/BashGuide/InputAndOutput。
sed OPTIONS [SCRIPT] [INPUTFILE]
它的:
$ LC_ALL=C sed --help
Usage: sed [OPTION]... {script-only-if-no-other-script} [input-file]...
里面的東西[...]是可選的。...代表可以重復的東西。
腳本存在人為問題 - 它會在名稱中包含空格或換行符的檔案名或名稱中包含的檔案名上中斷*...請記住使用 shellcheck 檢查您的腳本 - 它會捕獲此類錯誤。
's/.*///g' 我說這個模式正在洗掉名稱以開頭的任何檔案或檔案夾是否正確
它從一行文本中洗掉斜線.*之前的所有內容。您可以使用https://regexcrossword.com/和 sed 在這里https://www.grymoire.com/Unix/Sed.html/有趣地學習正則運算式。
這是一種奇怪的寫作方式,basename "$n"下一行是basename "$n" .wav.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/411855.html
標籤:
