我想编写一个带有2个参数的bash脚本,a
和b
。根据参数,它在文本文件的a
部分或部分b
中写入。
输出文件是一个类似这样的txt文件:
common content....
section a:
<everything should be written here when I specify option "a">
section b:
<everything should be written here when I specify option "b">
我是bash的新手。
答案 0 :(得分:1)
#!/bin/bash
if [ "$#" -eq 2 ];then
secA="$1"
secB="$2"
elif [ "$#" -eq 1 ];then
secA="$1"
fi
awk -v s1="$secA" -v s2="$secB" '
/section a/ && s1{
$0=$0"\n"s1
while(getline line){
if (line~/section b/) { $0=$0"\n"line;break}
}
}
/section b/ && s2{ $0=$0"\n"s2}
1' file
答案 1 :(得分:0)
以下脚本将文件的修改内容(文件名存储在file
变量中)写入标准输出。
新部分内容取自标准输入。
#!/bin/bash
file=text.txt
# write the file contents up to desired section (or the whole file)
sed -n '1,/^section '"$1"':$/p' "$file"
# write standard input
cat
# write the rest of the file
sed -n '/^section '"$1"':$/,${n;p}' "$file"