我怎样才能在编译过程中编辑一个可执行文件,而不改变它的源代码?
我必须编写一个编译文件年度的makefile.我使用跑步. #include #ifndef YEAR #define YEAR "2013" #endif int main(){ printf("Hello world from " YEAR "\n"); return 0; } 和makefile: year: year.c gcc year.c -o year run: ./year | sed -e 's/3/4/g' clean: rm year Makefile 解决方案 只需在命令行上定义YEAR - #ifndef将确保它不会重新定义: gcc -DYEAR=\"2014\" -o year year.c 其他解决方案 在这种特殊情况下,直接在您的程序中计算一年是一个更好的解决方案,如评论中所述. 通常,您需要使run成为year的依赖性.这是一种
0 2024-04-07
编程技术问答社区
用/* */注释替换//,但当//注释出现在/* */中时除外。
我面临的问题是需要C样式评论的ANSI编译器. 所以我试图将现有评论转换为符合C标准ISO C89. 我正在寻找一个sed表达式来替换//用/*注释,除非////评论出现在/**/注释中(这会打破评论). 我尝试了此(范围表达式)无济于事: sed -e '/\/*/,/*\//! s_//\(.*\)_/*\1 */_' > filename 某些事情会在这样的评论中忽略1行评论,但会更改其他所有内容? /********************************** * Some comment * an example bit of code within the comment followed by a //comment * some more comment ***********************************/ y = x+7; //this comment must be changed 谢谢! 解决方
0 2024-04-07
编程技术问答社区
什么是换行符-'n'。
这是一个非常基本的概念,但是我从未能够很好地表达出来.我想尝试拼写它,看看我出错了哪里. 如果需要,我将如何定义" newline字符".说如果我在Unix(或Windows)中创建一个新文件,则该文件存储"行末尾"信息,通过在称为"新行字符"的文件中插入一个特殊字符.如果是这样,它的ASCII值是多少?我记得在C程序中,我已经检查了针对值'\ n'的读取字符.以及为什么这使2个字符代表线字符的末端. bash$ cat states California Massachusetts Arizona 说,我想在线之间插入一条线空间,并想要表单的输出: 所需的输出: California Massachusetts Arizona bash$sed -e 's/\n/\n\n/g' states does not work. 为什么我不能像对待任何其他字符并运行上述命令一样对待"新线角色". (我知道有人可能会说这是SED语法的问题,但请您解释不允许这样做
0 2024-04-06
编程技术问答社区
如何修复macOS Sierra Android版中的 "sed: illegal option-r"?
我试图在MacOS上构建Android,但这给了我这个错误: " sed:非法选项-R" 我尝试了: make bootimage make systemimage make recovery brunch mka bacon 所有人都给我同样的错误. 解决方案 另一个选项是使用自制安装GNU-SED: brew install gnu-sed --with-default-names 其他解决方案 手动编辑路径是处理此操作的一种方法. 但是,还有一个替代解决方案可能适用于某些. 如今,大多数开发人员都有 conda . Conda可以安装最新的sed,并通过$ PATH 使其可见 conda install -c conda-forge sed conda负责编辑路径变量 P.S. 大多数人认为Conda是Python的包装经理,但这并非完全正确!我使用Conda安装所有内容.它可以很好地管理环境变量,例如PATH. ht
2 2024-04-04
编程技术问答社区
grep if word value greater than value
我这样的文件: 1 51710 . C A . clustered_events;contamination;germline_risk;read_position;t_lod DP=1;ECNT=6;POP_AF=1.000e-03;P_GERMLINE=-1.372e-02;TLOD=4.20 GT:AD:AF:DP:F1R2:F2R1:MBQ:MFRL:MMQ:MPOS:PGT:PID:SA_MAP_AF:SA_POST_PROB 0/1:0,1:1.000:1:0,0:0,1:26:0,136:43:2:0|1:51637_C_T:0.990,0.00,1.00:0.025,0.028,0.947 19 27733067 . A G,C . clustered_events;contamination;germline_risk;multiallelic DP=60
2 2024-03-31
编程技术问答社区
在linux环境下,将一个列的值与所有列进行比较
所以我有两个文件,一个看起来像 的VCF 88 Chr1 25 C - 3 2 1 1 88 Chr1 88 A T 7 2 1 1 88 Chr1 92 A C 16 4 1 1 ,另一个具有看起来像 的基因 GENEID Start END GENE_ID 11 155 GENE_ID 165 999 我想要一个脚本,该脚本是否存在基因位置(VCF文件的第三列)在第二文件的第二和第三位置的范围内,然后将其打印出来. 到目前为止,我所做的就是加入文件 awk '{if (3>$12 && $3
0 2024-03-31
编程技术问答社区
如何计算字母的频率
我有这样的数据 >sp|Q96A73|P33MX_HUMAN Putative monooxygenase p33MONOX OS=Homo sapiens OX=9606 GN=KIAA1191 PE=1 SV=1 RNDDDDTSVCLGTRQCSWFAGCTNRTWNSSAVPLIGLPNTQDYKWVDRNSGLTWSGNDTCLYSCQNQTKGLLYQLFRNLFCSYGLTEAHGKWRCADASITNDKGHDGHRTPTWWLTGSNLTLSVNNSGLFFLCGNGVYKGFPPKWSGRCGLGYLVPSLTRYLTLNASQITNLRSFIHKVTPHR >sp|P13674|P4HA1_HUMAN Prolyl 4-hydroxylase subunit alpha-1 OS=Homo sapiens OX=9606 GN=P4HA1 PE=1 SV=2 VECCPNCRGTGMQIRIHQIGPGMVQQIQSVCMECQGHGERISPKDRCKSCN
2 2024-03-31
编程技术问答社区
使用映射txt文件重命名fasta文件
编辑解决方案: > 我希望使用aCkaffold_mapping.txt文件在unix中重命名脚手架,其中.txt文件看起来像: $ head scaffold_mapping.txt >#ID_covAvg_fold_lengthLength >scaffold_1_c1_cov61.3780_length417825 >scaffold_3_c1_cov45.0025_length77714 >scaffold_4_c1_cov84.2432_length70007 >scaffold_5_c2_cov57.6219_length67890 >scaffold_6_c1_cov331.1665_length65908 >scaffold_7_c1_cov138.5574_length64984 >scaffold_9_c1_cov77.1170_length59223 >scaffold_2_c2_cov51.1554_length55365 >scaffold_11_
2 2024-03-31
编程技术问答社区
查找、替换,并在字符串的每个出现处增量
我对脚本的新手相对陌生,并为这个痛苦的简单问题提前道歉.我相信我已经进行了彻底的搜索,但是显然没有其他答案或食谱已经明确理解了(例如在这里 - 仍然无法得到). 我有一个由字母字符串(DNA,如果需要的话)组成的文件,每行一条字符串.在每个字符串上方,我插入了另一行以识别基础字符串.对于那些是生物信息学家的人,我正在尝试以FastA格式弥补测试数据集,也许您有工具?无论如何,我在每个">""之后,我将一个独特的词" num"放在,目的是使用bash增量器和sed创建一个唯一的数字,将每个字符串推向每个字符串.例如,在data.txt中,我有... > num,等等,等等,等等 atcgactgaatcga > num,等等,等等,等等 atcgatcgatcgatcg > num,等等,等等,等等 atcgatcgatcgatcg 我希望它是... > 0,等等,等等,等等 atcgactgaatcga > 1,等等,等等
0 2024-03-31
编程技术问答社区
用SED/AWK将FASTQ转换为FASTA
我有一个数据总是有四个 以以下格式(称为fastq): @SRR018006.2016 GA2:6:1:20:650 length=36 NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGN +SRR018006.2016 GA2:6:1:20:650 length=36 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+! @SRR018006.19405469 GA2:6:100:1793:611 length=36 ACCCGCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +SRR018006.19405469 GA2:6:100:1793:611 length=36 7);;).;);;/;*.2>/@@7;@77/ 是否有一种简单的sed/awk/bash方式将它们转换为 这种格式(称为fasta): >SRR018006.2016 GA2:6:1:20:650 length=36 N
2 2024-03-31
编程技术问答社区
二进制sed替换
我试图在二进制文件中进行sed替换,但是我开始相信这是不可能的.从本质上讲,我想做的类似于以下内容: sed -bi "s/\(\xFF\xD8[[:xdigit:]]\{1,\}\xFF\xD9\)/\1/" file.jpg 我希望实现的逻辑是:通过二进制文件进行扫描,直到十六进制代码FFD8,继续阅读直到FFD9,只保存它们之间的内容(在之前和之后丢弃垃圾,但包括和FFD9作为文件的保存部分) 有一个很好的方法吗?即使不使用sed? 编辑:我刚刚玩耍,找到了IMO最干净的方法.我知道这种Grep声明会贪婪. hexdump -ve '1/1 "%.2x"' dirty.jpg | grep -o "ffd8.*ffd9" | xxd -r -p > clean.jpg 解决方案 bbe 是"二进制文件的sed",并且应该更有效地工作对于大型二进制文件,而不是hexdumping/重建. 用途的一个示例: $ bbe -e 's/orig
0 2024-03-30
编程技术问答社区
最快打印文件中单行的方法
我必须从一个大文件(1500000行)中获取一条特定的行,多次在多个文件上循环中,我问我自己的最佳选择是什么? (就性能而言). 有很多方法可以做到这一点,我有男子化使用这2 cat ${file} | head -1 或 cat ${file} | sed -n '1p' 我找不到答案的答案,他们既只获取第一行还是两个(或两者) > 解决方案 删除cat的无用使用: $ sed -n '1{p;q}' file 这将在打印行后退出sed脚本. 基准测试脚本: #!/bin/bash TIMEFORMAT='%3R' n=25 heading=('head -1 file' 'sed -n 1p file' "sed -n '1{p;q} file" 'read line
2 2024-03-30
编程技术问答社区
cmd-sed 命令输入解析错误
我将GNU Makefile转换为MSBuild xml. i具有以下sed命令(较大命令的一部分): ... | sed 's/^Q(.*)/"&"/' | ... 当我仅执行sed部分Cygwin中时,它在某种意义上"起作用",因为它不会出错. 但是,在将其翻译成MSBuild xml之后 - 用",&,'替换了XML敏感符号 - 我得到了错误 sed:不支持的命令' 我确定这不是XML逃脱问题的问题; Visual Studio Build Log说 任务参数:command =" C:\ Program Files \ GNU ARM ECLIPSE \ build tools \ 2.8-201611221915 \ bin \ sed \ sed"'s/^q(.*)/'/'(taskid:21) sed:不支持的命令'(taskid:21) 命令"" C:\ Program Files \ GNU
2 2024-03-29
编程技术问答社区
在windows批处理文件中,将变量的第一个字母大写。
我正在尝试从%COMPUTERNAME%变量中大写输出的第一个字母.我尝试了以下代码,该代码不起作用. set host=%COMPUTERNAME% echo %host% | sed 's/^\(.\)/\1\u\2/g/' 输出应为Beast,而不是BEAST或beast 解决方案 我经常倾向于为此包装powershell命令: :: Q:\Test\2018\10\12\SO_52769852.cmd @Echo off For /f %%A in (' Powershell -NoP -C "$Env:COMPUTERNAME.Substring(0,1).ToUpper()+$Env:COMPUTERNAME.Substring(1).ToLower()" ') do set host=%%A Echo:%host% 其他解决方案而不是使用```'',而是使用内置`find`命令作为单行. @For /F "Tokens=2 Delims=:
0 2024-03-29
编程技术问答社区
在多个.txt文件中添加一个页眉
我需要一个批处理文件,该文件将在数百个.txt文件的内容开头的新行中添加文本"写入",而无需删除任何现有文本.我在这里发现了一些对我不起作用的东西.有人有建议吗? 这是我正在使用的代码: for /r %%a in (*.txt) do ( echo ---- %%a before ---- type "%%a" echo -------------------- echo Write In > "%%a.tmp" type "%%a" >> "%%a.tmp" del "%%a" move "%%a.tmp" "%%a" echo ---- %%a after ---- type "%%a" echo -------------------- ) pause 它什么也没做 解决方案 我很可能会这样做: rem // Create temporary header file:
0 2024-03-29
编程技术问答社区
如何从Windows批处理文件中的ECHO'ed字符串中剥离引号?
我有一个我正在创建的Windows批处理文件,但是我必须回声一个大复杂的字符串,因此我必须在任一端上添加双引号.问题在于,引号也与我正在写的文件相呼应.您如何呼应这样的字符串并剥离引号? 更新: 我已经花了过去两天的工作,终于能够将一些东西一起努力.理查德(Richard)的回答旨在剥离报价,但是即使我将回声放在子例程中并直接输出字符串时,Windows仍然挂在字符串中的字符上.我会接受理查德的答案,因为它回答了问题. 我最终使用了Greg的SED解决方案,但由于SED/Windows错误/功能,必须对其进行修改(没有任何文档,它没有帮助).在Windows中使用SED有一些警告:您必须使用双引号代替单语引号,您无法直接逃脱字符串中的双引号,您必须结束引文,使用 ^(so ^ ^" )然后beqin引用下一节.此外,有人指出,如果您将输入输入到SED,则有一个错误,其中有管道在字符串中(我没有验证这一点,因为在我的最终解决方案中,我才发现一种不在字符串中间的引号,而只是
0 2024-03-29
编程技术问答社区
使用bash在模式之间搜索文本
我需要对位于TXT文件中的数据进行排序.示例数据如下: ====== Jhon Doe score - ------ ====== Ann Smith score + ------ ====== Will Marrow score - ------ 我只需要在定义score +的地方提取部分.因此结果应为 ====== Ann Smith score + ------ 解决方案 sed可以如下: sed -n '/^======/{:a;N;/\n------/!ba;/score +/p}' infile ====== Ann Smith score + ------ 其中-n防止打印, /^======/ { # If the pattern space starts with "======" :a # Label to branch to N
0 2024-03-29
编程技术问答社区
用grep/sed从XML文件中抓取一个词
我正在使用Linux Shell脚本使用GREP在XML文件中找到信息.我需要的信息是没有标签的用户名wipis_dxu.我不允许使用XGREP之类的工具或其他工具. dxstg.target_domain wipis_dxu wovon_man_nicht_reden_kann_darueber_muss_mann_schweigen 解决方案
0 2024-03-29
编程技术问答社区
对于每一行,创建一个新的行,用另一个文件中的多个条目来追加。
好吧,我回来了,另一个没有脑子,让你们中的一个出色的奇才,我一直在尴尬地玩耍,而还没有解决这个问题.因此,毫不拖延,这是我要解决的问题. 我有两个文件 file1看起来像这样(实际文件有数百行W随机单词) somewebsite someotherwebsite somestinking blahblah foobar file2看起来像这样(许多tld,更多) .com.th .co.uk .com .de .ath.cx 好吧,我需要File1中的每一行才能在新行上添加了File2的每个TLD .... 要进一步详细说明,需要复制file1中的每一行,以便它可以将file2中的每个tld添加到file1中的每个条目中. 输出应该是这样的: somewebsite.com.th somewebsite.co.uk somewebsite.com somewebsite.de somewebsite.ath.
2 2024-03-29
编程技术问答社区